config.xml文件是AppCan移动App的配置文件,用于指定应用的显示名称、图标、应用起始页地址及需要使用的设备权限等信息,用户可通过AppCan IDE的可视化界面视图或者源码视图来配置移动App的信息。
在IDE中创建“项目”应用后后都会在工程下生成config.xml文件,在“项目管理器”中双击即可打开 或 右键config文件选择打开方式进行代码编辑。
配置规范:config.xml中的<widget>
节点内会有一个或多个<config>
块(如下所示参考)
<?xml version="1.0" encoding="utf-8" ?>
<widget widgetId="" pid="" appId="2222" channelCode="0000" version="00.00.0000" viewmode="application" width="320" height="480" sreensize="4.5">
<name>2222</name>
<description></description>
<author email=""> </author>
<icon src="icon.png" />
<license href=""></license>
<content src="index.html" encoding="utf-8" ></content>
<updateurl></updateurl>
<logserverip></logserverip>
<showmyspace>false</showmyspace>
<obfuscation>true</obfuscation>
<bgcolor>#fefefe</bgcolor>
<orientation>15</orientation>
<!-- 这里开始写配置-->
<config desc="" type="">
XXXX
</config>
<!-- .........-->
<!-- 以上区域为配置-->
</widget>
desc
为此config块的描述(无实际作用)<config>
块,根据不同的type
进行相应的操作本质上是进行替换操作
例子
<config desc="uexBaiduMap" type="KEY">
<param platform="iOS" name="$uexBaiduMap_APIKey$" value="qwerty"/>
<param platform="Android" name="$uexBaiduMap_APIKey$" value="123456"/>
</config>
另一个例子
<config desc="uexJPush" type="KEY">
<param platform="iOS" file="uexGroupfolder/PushConfig.plist" name="$UEXJPUSH_APP_KEY$" value="29f3d28136125dad137a42df"/>
<param platform="iOS" file="uexGroupfolder/PushConfig.plist" name="$UEXJPUSH_PUSH_CHANNEL$" value="TestPush"/>
<param platform="iOS" file="uexGroupfolder/PushConfig.plist" name="$UEXJPUSH_APS_ENVIRONMENT$" value="1"/>
</config>
说明
platform
必选参数 操作平台
"Android"
或者"iOS"
file
可选参数 要进行替换操作的文件路径
"AppCanPlugin-Info.plist"
Android 为"AndroidManifest.xml"
name
必选参数 全局搜索的值、既替换之前的值
value
必选参数 替换之后的值什么是URLSchemes?
Url Scheme:简单来说可以通过该Url Scheme从一个应用打开启动另一个应用,并实现应用间的数据传递。Url Scheme是苹果方给开发者提供的一个键值,对于使用者来说,如有兴趣可通过搜索引擎搜索 URL Schemes 相关词条或文章都能找到答案,学习使用更多的URL Schemes 的能力。
第三方应用插件客户端:
可以查看对应插件API文档说明部分查询Url Scheme配置如何定义或说明的;
*比如在微信支付过程中,App用过uexWeiXin插件打开微信客户端进行支付,支付过程完成后,微信客户端通过应用自定义的UrlScheme返回到本App,并传回支付结果;uexQQ插件文档说明部分也有相关说明,务必查看文档。
如果是另一个应用:
对于appcan生成的iOS应用安装包,此属性可以通过AppCan平台生成的ipa包里的Info.plist文件中找到;或者可以自定义配置urlscheme值。
例子
<config desc="uexQQ" type="URLSCHEME">
<urlScheme name="uexQQ" schemes="['scheme1','scheme2','scheme3']"/>
</config>
说明
name
必选参数 对所设置的urlscheme的名字 对应<key>CFBundleURLName</key>
项,可设置任意字符串,无实际作用
schemes
必选参数 要设置的urlschemes。schemes
为数组形式的json字符串,具体规则如下:
以上述配置为例,假设应用A中有进行此UrlScheme配置,在另一个应用B中,通过引擎的JS方法uexWidget.loadApp('scheme1:');
即可打开应用A(注意不要漏掉冒号!)
目前支持如下权限设置
iOS 设置APP的隐私权限 参考.iOS10适配配置
设置APP后台权限
<config desc="backgroundConfig" type="AUTHORITY">
<permission platform="iOS" info="backgroundMode" flag="5"/>
</config>
info
必选参数 所设置的权限 设置后台权限时,传"backgroundMode"
platform
必选参数 对应的平台 目前仅支持iOS 传"iOS"
flag
必选参数 所设置的权限flag iOS 平台下 flag如下所示
flag | info.plist里对应的字符串 | 解释 | 备注 |
---|---|---|---|
1 | <string>audio</string> |
后台音乐播放 | |
2 | <string>location</string> |
后台定位 | |
4 | <string>voip</string> |
后台VoIP服务 | |
8 | <string>newsstand-content</string> |
后台新闻更新 | |
16 | <string>external-accessory</string> |
后台与iOS配件进行交互 | |
32 | <string>bluetooth-central</string> |
后台与蓝牙设备进行交互 | 此时iPhone作为central |
64 | <string>bluetooth-peripheral</string> |
后台通过蓝牙发送广播 | 此时iPhone作为peripheral |
128 | <string>fetch</string> |
后台下载内容 | 仅iOS 7.0+ |
256 | <string>remote-notification</string> |
通过点击推送消息后台下载内容 | 仅iOS 7.0+ |
**注意:用户需慎重配置后台权限,不当的权限设置会导致APP上架审核失败。**
<config desc="whiteList" type="AUTHORITY">
<permission platform="iOS" info="urlSchemeWhiteList">
<string>scheme1</string>
<string>schene2</string>
</permission>
</config>
info
必选参数 所设置的权限 设置urlScheme白名单时,传"urlSchemeWhiteList"
platform
必选参数 对应的平台 传"iOS"
<permission>
节点内 每一个<string>
节点对应一个urlScheme,至多50个uexQQ
uexWeiXin
uexAliPay
uexSina
可参考如下配置<config desc="whiteList" type="AUTHORITY">
<permission platform="iOS" info="urlSchemeWhiteList">
<!--如果您有用到uexWeiXin请添加如下urlSchemes至白名单中,本行不要复制-->
<string>wechat</string>
<string>weixin</string>
<!--如果您有用到uexSina请添加如下urlSchemes至白名单中,本行不要复制-->
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>sinaweibohdsso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<!-- 如果您有用到uexQQ请添加如下urlSchemes至白名单中,本行不要复制-->
<string>mqzoneopensdk</string>
<string>mqzoneopensdkapi</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapiV2</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>wtloginmqq2</string>
<string>mqqapi</string>
<string>mqqwpa</string>
<string>mqzone</string>
<string>mqq</string>
<!--如果您有用到uexAliPay请添加如下urlSchemes至白名单中,本行不要复制-->
<string>alipay</string>
<string>alipayshare</string>
</permission>
</config>
主适用于用于iOS系统,目前支持如下需要配置的主要有uexApplePay插件apple pay、iOS推送功能apns。
<config desc="uexApplePay" type="ENTITLEMENTS">
<entitlement type="merchant" value="merchantIdentifier1"/>
<entitlement type="merchant" value="merchantIdentifier2"/>
</config>
iOS推送功能apns配置参考.iOS10适配配置
<entitlement>
节点数量取决于你的App中会用到的商用ID标识数量。你应该为每一个商用ID标识设置一个<entitlement>
节点,并修改其中的value
值为此商用ID标识的merchantIdentifier。(type值不要更改!)主要用于当打开的页面或open一个新窗口出错,页面网络异常等场景。
1、只需将以下配置代码写进config.xml文件里实现。
2、自定义错误页面,可以自行UI设计,路径只支持"res://","wgt://"协议,详见Constant。
<error src="error_content.html"/>
主适用于用于安卓系统,简单地说就是状态栏透明;对于iOS系统,ios状态栏是系统的无需设置。
1、只需将以下配置代码写进config.xml文件里实现。
<statusbar color="#00000000"/>
2、支持版本:
Android引擎版本:4.0.0+
开发中对于启动页可能会有一些特别的要求,比如在启动页加动画,启动页加载完成后,config文件配置以下代码,就可产生一个过度的淡出效果。
.配置方法:
1、只需将以下配置代码写进config.xml文件里实现。
<config desc="engine" type="KEY">
<param platform="iOS" name="$ACELaunchImageFadingDuration$" value="3000"/>
</config>
<config desc="engine" type="KEY">
<param platform="Android" file="res/anim/platform_myspace_fade_in_anim.xml" name="300" value="3000"/>
<param platform="Android" file="res/anim/platform_myspace_fade_out_anim.xml" name="300" value="3000"/>
</config>
其中"platform"和"value"为可选值和自定义值,其他均为定值(按照以上配置即可).
其中value值=3000为淡出动画总时长,单位为毫秒,可以替换为自己需要的时长。动画就不会有一闪而过的效果.
2、支持版本:
iOS引擎版本:4.1.5+(iOS_Engine_4.1.5_170302_01).
安卓引擎版本:4.0.0+.
适用于iOS系统,其中的内容全部写入entitlements中,例如uexApplePay插件apple pay、iOS推送功能apns、NetworkExtension、App Groups、VPN等功能需要在entitlements中添加的配置都可以写在这里。
在config.xml中添加如下配置
<config desc="" platform="iOS" type="ENTITLEMENTS-CUSTOM">
<ENTITLEMENTS platform="iOS" info="" type="ENTITLEMENTS-CUSTOM">
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.networking.networkextension</key>
<array>
<string>app-proxy-provider</string>
<string>content-filter-provider</string>
<string>packet-tunnel-provider</string>
</array>
<key>com.apple.developer.networking.vpn.api</key>
<array>
<string>allow-vpn</string>
</array>
<key>com.apple.security.application-groups</key>
<array/>
</ENTITLEMENTS>
</config>
其中<config>
和<ENTITLEMENTS>
节点的参数为定值,其他为要写入工程的entitlements文件中的内容。
添加如上配置后,工程的entitlements文件内容如图所示
版本支持:
iOS引擎4.2.0+
适用于iOS系统,其中的内容全部写入info.plist中。
在config.xml中添加如下配置
<config desc="" platform="iOS" type="INFO-CUSTOM">
<INFOCUSTOM platform="iOS" info="" type="INFO-CUSTOM">
<key>NSBluetoothPeripheralUsageDescription</key>
<string>XXX使用蓝牙的权限</string>
<key>NSCalendarsUsageDescription</key>
<string>XXX访问日历的权限</string>
<key>NSCameraUsageDescription</key>
<string>XXX使用摄像头的权限</string>
</INFOCUSTOM>
</config>
其中<config>
和<INFOCUSTOM>
节点的参数为定值,其他为要写入工程的info.plist文件中的内容。
添加如上配置后,工程的info.plist增加的对应内容如图所示
版本支持:
iOS引擎4.2.0+
注:在您阅读此部分文档时,我们假定您已经阅读过文档《iOS10适配指南》。
适用于iOS系统,使用该配置方式可实现权限描述的多语言显示。
在权限描述中增加language属性,en对应英文,zh-Hans对应中文。 以打开相机为例,在config.xml中添加如下配置
<!--iOS10权限-->
<config desc="privacyConfig" type="AUTHORITY">
<permission platform="iOS" info="privacy" type="camera">
<string language="en">Used to open camera</string>
<string language="zh-Hans">用于打开相机</string>
</permission>
效果如图
版本支持:
iOS引擎4.1.0+