今日看看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调用上的差异
相关推荐
IONIC+PhoneGap项目源码,爱下不下
phoneGAP就是Cordova,据说执行起来比网页快, Android, ios通吃
一个完整的phonegap与android的例子。用在pad上,包含一些自定义插件。
phonegap,cordova2.9源代码,以及自带的示例程序
PhoneGap html5 拍照上传DEMO
基于android ,phonegap调用照相机拍照,图片保存
phonegap-cli, PhoneGap和 PhoneGap/构建 命令行 接口 PhoneGap命令行接口和 node.js 库。命令行命令行要求安装 node.js 版本 >=4.0.0安装 iOS sim 将应用程序部署到iOS模拟器。安装$ npm install
使用phonegap基于jquery mobile、jqMobi的相关Demo实例。
一个ionic+phonegap框架的webapp实例源码
用PhoneGap访问设备本地API可以实现调用以下具体设备 PhoneGap如何实现调用不同平台手机上的设备功能 PhoneGap开发ios应用是否要交年费? 答:需要,因为编译后同ios的本地应用没有区别,同样要通过许可证发布到App...
跨平台开发技术-PhoneGap从入门到精通(PhoneGap、罗盘、运动传感器、地理位置
它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能。PhoneGap是...
PhoneGap 2.9.0
不搭建andrid 环境 不配置android sdk 或者不搭建xcode环境,或者不安装 node.js npm 的情况下就可以创建phoengap应用 ...电脑敲代码 手机上的phonegap app实时自动更新显示 视频教程+源码+课件
phoneGap手机安装apk,开发phoneGap项目 的时候方便调试
该Simple已经实现了GPS定位,重力感应,声音调用,振动,摄像头调用... PhoneGap是一款开源的手机应用开发平台,它... 目前,PhoneGap已实现对iPhone/ipad、Android、Symbian,Palm、黑莓各版本绝大部分功能的支持.
它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能。
PhoneGAP实例源码,含汇率换算器、万圣节摇摇乐及指南针实例
phonegap 最新桌面版,版本号:6.3.0
此调试工具是调试phonegap应用的。官方把电脑端和手机端分开下载。 我这里把它们都手机一块儿。win目录在电脑上安装,app在手机上安装。 安装后,把win中的案例解压,创建项目时候选择此项目,然后手机上输入电脑上...