公测-configxml配置插件以及iOS支持swift

本次打包服务器公测内容 整理如下

config.xml——Key值配置
config.xml——UrlScheme配置
config.xml——权限配置
swift支持
附录 一份完整的config.xml配置示例

公测对象1:config.xml——Key值配置
目的
  • 规避现在部分需要配置key的插件(如百度地图高德地图等等)需要下载插件包进行修改key值操作,然后将插件作为自定义插件上传使用这一繁琐过程。
适用平台
  • 安卓&iOS
针对人群
  • App前端开发者
使用方法
  • 向config.xml中添加相应字段,即可完成对插件的key值配置操作
示例
安卓极光推送测试:(官网公共插件已经支持)
  • 公测所用的测试插件为极光推送,测试版本为安卓:uexJPush-3.0.4 (见公测贴链接附件)

  • 示例代码如下:用户需要在 config.xml 中添加:

  1. <config desc="uexJPush" type="KEY">
  2. <param platform="Android" name="$UEXJPUSH_PACKAGE$" value="org.zywx.wbpalmstar.widgetone.uexJPushDemo"/>
  3. <param platform="Android" name="$UEXJPUSH_APPKEY$" value="e905af7390a3413439d24377"/>
  4. </config>

并把org.zywx.wbpalmstar.widgetone.uexJPushDemo 换成自己应用的包名、把 e905af7390a3413439d24377 换成极光推送官网申请的appkey。

iOS极光推送测试:(官网公共插件已经支持)
  • 公测所用的测试插件为极光推送,测试版本为iOS:uexJPush-3.0.2 (见公测贴链接附件)
  • 示例代码如下:
  1. <config desc="uexJPush" type="KEY">
  2. <param platform="iOS" file="uexGroupfolder/PushConfig.plist" name="$UEXJPUSH_APP_KEY$" value="29f3d28136125dad137a42df"/>
  3. <param platform="iOS" file="uexGroupfolder/PushConfig.plist" name="$UEXJPUSH_PUSH_CHANNEL$" value="TestPush"/>
  4. <param platform="iOS" file="uexGroupfolder/PushConfig.plist" name="$UEXJPUSH_APS_ENVIRONMENT$" value="1"/>
  5. </config>
  • 用户只需修改value的值即可完成相应key的配置,其中
  1. $UEXJPUSH_APP_KEY$ -->iOSAppKey 填在极光推送官网上注册后得到的iOS AppKey
  2. $UEXJPUSH_PUSH_CHANNEL$ --> apns推送频道 填任意字符串
  3. $UEXJPUSH_APS_ENVIRONMENT$ -->推送证书类型 0-开发者证书(developement) 1-发布证书(distribution)
iOS高德地图参考测试:(官网公共插件已经支持)
  • 公测所用的测试插件为高德地图,测试版本为iOS:uexGaodeMap-3.0.2 (见公测贴链接附件)用户需要将如下字段中的XXX替换为自己申请的key,然后添加至config.xml中:
  1. <config desc="uexGaode" type="KEY" >
  2. <param platform="iOS" name="$uexGaodeMap_APIKey$" value="XXX"/>
  3. </config>
安卓高德地图参考测试:(官网公共插件已经支持)
  • 公测所用的测试插件为高德地图,测试版本为安卓:uexGaodeMap-3.0.5 (见公测贴链接附件)用户需要将如下字段中的XXX替换为自己申请的key,然后添加至config.xml中:
  1. <config desc="uexGaode" type="KEY" >
  2. <param platform="Android" name="$uexGaodeMap_APIKey$" value="XXX"/>
  3. </config>
备注
本次公测仅支持极光推送、高德插件,但所有需要配置key的插件会逐渐发布新版本以支持此配置方式,包括但不限于
  • uexBaiduMap 百度地图(Android,iOS)
  • uexEasemob 环信(Android)

公测对象2: config.xml——UrlScheme配置
目的
  • 为用户提供一个自定义UrlScheme的接口
  • 规避现在部分需要配置UrlScheme的插件(如微信QQ等等)需要下载插件包,进行修改UrlScheme操作,然后将插件作为自定义插件上传使用这一繁琐过程。
  1. Url Scheme:可以通过Url Scheme从一个应用打开另一个应用,并实现应用间的数据传递。
  2. 比如在微信支付过程中,App用过uexWeiXin插件打开微信客户端进行支付,支付过程完成后,微信客户端通过应用自定义的UrlScheme返回到本
  3. App,并传回支付结果
适用平台
  • iOS
针对人群
  • App前端开发者
使用方法
  • 向config.xml中添加相应字段,即可完成对应用的的UrlScheme配置操作
示例
  • 示例代码如下
  1. <config desc="uexQQ" type="URLSCHEME">
  2. <urlScheme name="uexQQ" schemes="['A123124','Tencent24asd3431']"/>
  3. </config>
  • desc 和name均为描述性字段,可任意修改
  • schemes为数组结构的字符串,每一个自定义UrlScheme用单引号(')包含起来,多个UrlScheme之间用逗号(,)隔开,然后所有这些UrlScheme用中括号([])再包括进去
  • 以上述配置为例,假设应用A中有进行此UrlScheme配置,在另一个应用B中,通过引擎的JS方法uexWidget.loadApp('A123124:');即可打开应用A(注意不要漏掉冒号!)
备注
现有的插件(如uexQQ,uexWeiXin等)均支持此配置,不用做额外修改

公测对象3:config.xml——权限配置
目的
  • 为用户提供自定义应用权限的接口
适用平台
  • iOS
针对人群
  • App前端开发者
使用方法
  • 向config.xml中添加相应字段,即可完成对应用的的权限配置操作
示例
  • 示例代码如下
  1. <config desc="bgConfig" type="AUTHORITY">
  2. <permission platform="iOS" info="backGroundMode" flag="111"/>
  3. </config>
  • info 配置内容 目前仅支持backGroundMode,既后台权限配置
  • flag 配置参数 backGroundMode后台权限的参数说明如下
    flag解释备注
    1后台音乐播放
    2后台定位
    4后台VoIP服务
    8后台新闻更新
    16后台与iOS配件进行交互
    32后台与蓝牙设备进行交互
    64后台通过蓝牙发送广播
    128后台下载内容仅iOS 7.0+支持
    256通过点击推送消息后台下载内容仅iOS 7.0+支持
备注
  • 用户需慎重配置后台权限,不当的配置会影响上架AppStore
  • 其他iOS权限配置已预留接口,待调研确实有相应需求后,再修改打包服务器进行下一次公测

公测对象4:swift支持

目的
  • 支持开发者用swift和oc混编进行原生插件开发
适用平台
  • iOS
针对人群
  • iOS原生插件开发者
使用方法
  • 插件的接口文件uexXXX.m还是要用oc编写
  • oc和swift混编的头文件可以用Xcode生成的,也可以自己编写,但一定要将此头文件单独分离出来,例如存为uexXXXSwift.h(以下均用.h来代表此头文件)

  • 在每个调用了swift方法的oc文件中引用.h

  • 将此.h添加至生成静态库的工程中
  • 在插件目录下新建uexSwift,并将所有的.swift文件复制至此目录中
  • 此目录中的.swift文件会被添加至打包工程并参与编译
示例

uexChart-3.0.0

此插件封装的一个开源swift库ios-charts,用以提供各种图表功能。

开发者可以查看此插件的源码来了解具体封装方法

备注

由swift特性所限,用此方法开发的插件需求系统版本至少为iOS 7.0+


附录一份完整的config.xml配置示例
  1. <?xml version="1.0" encoding="utf-8" standalone="no"?>
  2. <widget appId="10030629" channelCode="000" version="0.1" widgetId="">
  3. <name>测试uexDemo</name>
  4. <description>测试插件Demo</description>
  5. <author email="3g2win@mail.com">3g2win</author>
  6. <icon src="icon.png"/>
  7. <license href="http://3g2win.com"/>
  8. <content encoding="utf-8" src="index.html"/>
  9. <logserverip/>
  10. <obfuscation>false</obfuscation>
  11. <updateurl/>
  12. <showmyspace>true</showmyspace>
  13. <bgcolor>#fefefe</bgcolor>
  14. <widgetOne version="[widgetOneVersion]"/>
  15. <orientation>1</orientation>
  16. <config desc="uexJPush" type="KEY">
  17. <param platform="iOS" file="uexGroupfolder/PushConfig.plist" name="$UEXJPUSH_APP_KEY$"
  18. value="29f3d28136125dad137a42df"/>
  19. <param platform="iOS" file="uexGroupfolder/PushConfig.plist" name="$UEXJPUSH_PUSH_CHANNEL$" value="TestPush"/>
  20. <param platform="iOS" file="uexGroupfolder/PushConfig.plist" name="$UEXJPUSH_APS_ENVIRONMENT$" value="1"/>
  21. </config>
  22. <config desc="uexGaode" type="KEY" >
  23. <param platform="iOS" name="$uexGaodeMap_APIKey$" value="填写你申请的appkey"/>
  24. </config>
  25. <config desc="bgConfig" type="AUTHORITY">
  26. <permission platform="iOS" info="backGroundMode" flag="111"/>
  27. </config>
  28. <config desc="uexQQ" type="URLSCHEME">
  29. <urlScheme name="uexQQ" schemes="[`A123124`,`Tencent24asd3431`]"/>
  30. </config>
  31. </widget>