`

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
分享到:
评论

相关推荐

    phoneGAP2.9.1.zip

    PhoneGap的核心思想是将Web应用包装在原生的移动应用壳中,使得这些Web应用能够访问设备的功能,如摄像头、GPS、加速度计等,而无需编写原生代码。这个框架由Adobe公司维护,并且遵循Apache许可证。 在"phoneGAP...

    IONIC+PhoneGap项目源码

    1. "深入浅出 phonegap 代码.zip" - 这个文件可能是关于PhoneGap的教程或者示例代码,包含了深入讲解PhoneGap使用方法的代码示例,可以帮助初学者理解PhoneGap的工作原理和实践应用。 2. "ionic-1.1.zip" - 这是...

    phonegap完整例子!

    这个"phonegap完整例子!"是针对Android平台的一个示例项目,特别适合在pad设备上运行,并且包含了自定义插件的实现,这对于深入理解和使用PhoneGap技术尤其有帮助。 1. **PhoneGap基础概念** - PhoneGap基于Apache...

    phonegap源码+示例

    这个资源包含PhoneGap的源代码,版本为Cordova2.9,以及相关的示例程序,这为我们深入理解PhoneGap的工作原理和开发流程提供了宝贵的材料。 Cordova2.9是PhoneGap的一个重要版本,它在那时提供了对多种移动操作系统...

    PhoneGap实例

    PhoneGap实例是一个深入实践的项目,它展示了如何利用PhoneGap框架结合jQuery Mobile或jqMobi来构建跨平台的移动应用程序。PhoneGap是一个开源框架,它允许开发者使用HTML、CSS和JavaScript来开发原生的移动应用,...

    Phonegap拍照,图片保存应用

    PhoneGap的核心理念是通过Web技术来桥接移动设备的原生功能,如摄像头、地理位置、存储等,让Web开发者也能开发出具有原生体验的移动应用。 在"PhoneGap拍照,图片保存应用"这个主题中,我们将探讨如何利用PhoneGap...

    PhoneGap环境搭建demo

    PhoneGap环境搭建是开发跨平台移动应用的第一步,这里我们将详细讲解如何进行PhoneGap的配置和安装。 1. **系统需求**:首先,你需要一个支持PhoneGap开发的计算机系统,通常要求是Windows、Mac OS或Linux。确保...

    PhoneGAP实例源码

    PhoneGap的核心理念是通过Web技术来桥接移动设备的原生功能,使得开发者无需深入学习各种平台的原生代码,就能创建功能丰富的应用。 在这个"PhoneGAP实例源码"压缩包中,包含了三个有趣的实例:汇率换算器、万圣节...

    PhoneGap-拍照上传DEMO

    3. **PhoneGap Camera Plugin**:PhoneGap的相机插件提供了一种更简单的方式来访问设备的摄像头。开发者可以通过调用`navigator.camera.getPicture`方法,选择拍照或从相册选取图片,并获取图片的Base64编码或文件...

    phonegap 桌面版6.3.0

    PhoneGap的核心理念是通过WebView技术将Web应用程序与原生设备的功能相结合,使开发者无需掌握多种原生编程语言即可实现多平台的移动应用开发。 PhoneGap的主要特点包括: 1. **跨平台开发**:PhoneGap支持Android...

    phoneGap手机安装apk

    PhoneGap的核心理念是通过Web技术来桥接移动设备的原生功能,如摄像头、GPS、加速度计等,为开发者提供了一个统一的API接口,使得Web应用能够访问这些硬件资源。下面,我们将深入探讨PhoneGap手机安装apk的过程以及...

    PhoneGap介绍与原理

    ### PhoneGap介绍与原理 #### 背景与挑战 随着移动互联网的快速发展,各种平台如雨后春笋般涌现,其中包括移动设备、桌面应用、Web应用及Flash应用等。这种多平台的趋势为企业和个人开发者带来了前所未有的机遇,...

    phonegap2.0版本android视频播放实例源码

    PhoneGap 2.0 版本是一个较早的版本,但仍然包含了许多基础功能,使得开发者能够利用Web技术进行混合应用开发。在本实例中,我们关注的是如何在Android平台上实现视频播放功能。 首先,PhoneGap提供了访问设备API的...

    PhoneGap demo

    这个“PhoneGap demo”是一个展示如何利用PhoneGap技术来开发Android图书商城应用的实例。它展现了PhoneGap的强大功能,将网页技术与移动设备的特性相结合,创建出具有动态效果的应用程序。 首先,我们要理解...

    phonegap-1.0.0rc2.zip

    这个“phonegap-1.0.0rc2.zip”文件是PhoneGap的一个早期版本,版本号为1.0.0 Release Candidate 2,这表明它是一个在正式版本发布前的候选版本,可能包含了对早期版本的改进和修复。 PhoneGap的核心理念在于利用...

    phonegap源码

    这个"phonegap-2.7.0源码"是PhoneGap在2.7.0版本的完整源代码,它包括了开发移动应用所需的核心组件。这个版本发布于2013年,虽然相对较老,但对于学习PhoneGap的历史和工作原理非常有帮助。 PhoneGap的核心理念是...

    ionic+phonegap 案例源码

    标题"ionic+phonegap 案例源码"表明这是一个使用了Ionic框架和PhoneGap工具开发的移动应用示例项目。Ionic是一个流行的开源HTML5移动应用框架,它允许开发者使用Web技术(如HTML, CSS, JavaScript)来构建原生感的...

    PhoneGap Build的使用

    ### PhoneGap Build的使用 #### 一、简介与背景 PhoneGap是一款开源框架,它允许开发者使用HTML、CSS和JavaScript等Web技术来构建跨平台的移动应用。PhoneGap Build则是Adobe提供的一项云端服务,用于帮助开发者更...

Global site tag (gtag.js) - Google Analytics