`

phonegap002

 
阅读更多

今日看看Windows Phone(WP)。

在WP上做JS和OS的互通比较简单,因为内置的WebBrowser提供了比较好的与JS的互通机制,包括JS调进来和回调JS,下面先看看架构图,和android非常类似:

下面重点谈谈JS与WP OS的互通

1)JS端调用WP端

WP提供了WebBrowser.ScriptNotify Event,它可以让JS里调用window.external.notify时,调到MainPage里加载的WebBrowser里ScriptNotify方法,具体可见下面的文档:

http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.scriptnotify%28v=vs.95%29.aspx

Phonegap用PGView包装了WebBrowser:

<Grid x:Name="LayoutRoot" Background="Transparent">
        
        <phone:WebBrowser x:Name="GapBrowser" 
                          HorizontalAlignment="Stretch"  
                          VerticalAlignment="Stretch" 
                          IsScriptEnabled="True" 
                          Foreground="White"
                          Navigated="GapBrowser_Navigated" 
                          Loaded="GapBrowser_Loaded" 
                          Unloaded="GapBrowser_Unloaded" 
                          ScriptNotify="GapBrowser_ScriptNotify" 
                          LoadCompleted="GapBrowser_LoadCompleted" 
                          Navigating="GapBrowser_Navigating" 
                          NavigationFailed="GapBrowser_NavigationFailed" 
                          IsGeolocationEnabled="True" />
        
    </Grid>

 于是乎GapBrowser_ScriptNotify成了WP OS对JS的接口,GapBrowser_ScriptNotify里面再通过参数动态反射相应的Command来响应各种需求

2)WP端反调JS返回结果

WP提供了webBrowser.InvokeScript,它可以从OS端调用已在WebBrowser里加载了的JS中的方法,由于有了这个特 性,大大简化了返回调用结果的实现,不像android上还需ajax或JSONP那么麻烦。这样一来也不需要区分同步或异步调用,统一用异步调用就行了

下面看看一去一回的时序图:

另外值得一提的是WP上没有像android那样通过一个plugin.xml来配置OS端逻辑的实现,而是直接通过传进去的包名+类名来反射 command类,如果是phonegap系统提供的command,就直接用类名来映射,如果是自己开发的command,则需要通过"包名.类名"来 映射。

通过这两天看phonegap在android端和wp端的实现,有点感觉它是在做苦力活,方便了别人苦了自己,为了给用户一致的JS API,使得它需要根据各个平台对JS兼容的特点,做Adapter,所以从大的架构层面上看,phonegap无太多创新可言,它的核心价值就是勤勤恳 恳地处理了各个平台一些核心API调用上的差异

 

 

  • 大小: 24.7 KB
  • 大小: 56.8 KB
分享到:
评论

相关推荐

    IONIC+PhoneGap项目源码

    IONIC+PhoneGap项目源码,爱下不下

    phoneGAP2.9.1.zip

    phoneGAP就是Cordova,据说执行起来比网页快, Android, ios通吃

    phonegap完整例子!

    一个完整的phonegap与android的例子。用在pad上,包含一些自定义插件。

    phonegap源码+示例

    phonegap,cordova2.9源代码,以及自带的示例程序

    PhoneGap-拍照上传DEMO

    PhoneGap html5 拍照上传DEMO

    Phonegap拍照,图片保存应用

    基于android ,phonegap调用照相机拍照,图片保存

    phonegap-cli, PhoneGap和 PhoneGap/构建 命令行 接口.zip

    phonegap-cli, PhoneGap和 PhoneGap/构建 命令行 接口 PhoneGap命令行接口和 node.js 库。命令行命令行要求安装 node.js 版本 &gt;=4.0.0安装 iOS sim 将应用程序部署到iOS模拟器。安装$ npm install

    PhoneGap实例

    使用phonegap基于jquery mobile、jqMobi的相关Demo实例。

    ionic+phonegap 案例源码

    一个ionic+phonegap框架的webapp实例源码

    关于html5开发框架PhoneGap的移动开发调研

    用PhoneGap访问设备本地API可以实现调用以下具体设备 PhoneGap如何实现调用不同平台手机上的设备功能 PhoneGap开发ios应用是否要交年费? 答:需要,因为编译后同ios的本地应用没有区别,同样要通过许可证发布到App...

    跨平台开发技术-PhoneGap从入门到精通3

    跨平台开发技术-PhoneGap从入门到精通(PhoneGap、罗盘、运动传感器、地理位置

    PhoneGap 开发的一个例子

    它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能。PhoneGap是...

    PhoneGap-2.9.0

    PhoneGap 2.9.0

    PhoneGap 视频教程+源码+课件

    不搭建andrid 环境 不配置android sdk 或者不搭建xcode环境,或者不安装 node.js npm 的情况下就可以创建phoengap应用 ...电脑敲代码 手机上的phonegap app实时自动更新显示 视频教程+源码+课件

    phoneGap手机安装apk

    phoneGap手机安装apk,开发phoneGap项目 的时候方便调试

    PhoneGap开发的android应用实例

    该Simple已经实现了GPS定位,重力感应,声音调用,振动,摄像头调用...  PhoneGap是一款开源的手机应用开发平台,它... 目前,PhoneGap已实现对iPhone/ipad、Android、Symbian,Palm、黑莓各版本绝大部分功能的支持.

    PhoneGap开发手册

    它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能。

    PhoneGAP实例源码

    PhoneGAP实例源码,含汇率换算器、万圣节摇摇乐及指南针实例

    phonegap 桌面版6.3.0

    phonegap 最新桌面版,版本号:6.3.0

    PhoneGap-Desktop 和 PhoneGap Developer App官方出品

    此调试工具是调试phonegap应用的。官方把电脑端和手机端分开下载。 我这里把它们都手机一块儿。win目录在电脑上安装,app在手机上安装。 安装后,把win中的案例解压,创建项目时候选择此项目,然后手机上输入电脑上...

Global site tag (gtag.js) - Google Analytics