phonegap-cordova插件适配ios9
由于苹果ios升级的ios9,xcode升级到xcode7,新的特性有所变化需要针对性的调整项目。
我们在开发phonegap项目中就遇到有问题。这里需要注意,特别是用到一些第三方的插件。
这里涉及到微信,支付宝,微信,sina微博,qq,腾讯微博,人人网等。
一些自己自定义的网络连接,图片连接。
1.app内访问的网络必须使用HTTPS协议。我们目前大多数请求还是用的http协议。
所以最简单的办法就是回退http协议。
具体方法:
在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。
然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES;
2、大部分第三方平台SDK不支持bitcode
问题描述:iOS 9新建项目默认需要支持bitcode,而不支持bitcode的SDK会导致无法编译运行。
解决方案:
(1)、暂时关闭对bitcode的支持(建议),方法如下图
(2)、移除不支持bitcode的平台SDK。
3、添加Scheme白名单
问题描述:在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。
具体方法:
1)、在项目的info.plist中添加一LSApplicationQueriesSchemes,类型为Array。
2)、然后给它添加一个需要支持的项目,类型为字符串类型;
以下列出了各类第三方应用的Scheme白名单,请选择性的添加。用到那个添加那个。
各平台OpenURL白名单说明 |
|||
新浪微博 |
|
||
腾讯微博 |
|
||
豆瓣 |
|
||
开心网 |
|
||
微信 |
|
||
易信 |
|
||
支付宝 |
|
||
|
|
||
QZONE |
[注:若同时使用QQ和QZONE,则直接添加本格即可] |
||
Google+ |
|
||
人人网 |
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
Line |
|
||
KakaoTalk |
|
||
KaokaoStory |
|
||
|
|
||
Tumblr |
|
||
非平台类,如短信,复制,邮件等 |
|
||
必看注意: | |||
1.在iOS9中,如果没有添加上述白名单,系统会打印类似如下提示:.-canOpenURL: failed for URL: “sinaweibohdsso://xxx” – error: “This app is not allowed to query for scheme sinaweibohdsso”(如下图)如没有添加相关白名单,有可能导致分享失败,例如不会跳转微信,不会跳转QQ等。 | |||
2.添加完上述所需的名单,系统依然会打印类似信息:.-canOpenURL: failed for URL: “sinaweibohdsso://xxx” – error: “null”这是系统打印的信息,目前是无法阻止其打印,即无法消除的。可以忽略! | |||
如果没有设置白名单的话,系统的打印信息如图所示:
添加完后,系统是依然会打印的,不过error会变成null:
4.动态库丢失找不到
当我们在添加Framework的时候,会发现此前导入的动态链接库(dylib)他部变成了红色,如下图所示,所幸的是,就算不替换成Xcode 7新的动态库文件(.tbd),仍然可以正常运行.
我们需要删掉丢失的动态库,然后从新添加一次.tbd后缀的动态库。
图 动态链接库丢失示意图
如何添加动态库?
方法1. 在项目Target中的Link Binary With Libraries 手动添加
首先点击 “+”
显示搜索添加页面,在这里如果搜索之前的libsqlite3.dylib是搜不出来ios9之前的。所以需要点击 Add Other,出现文件目录页面,正常情况这里去通过Finder也是找不到老的libsqlite3.dylib文件的,因为这个文件是隐藏掉的。所以需要按
快捷键 CMD+Shift+G (Go to the folder),输入/usr/lib后,进入隐藏的界面,然后添加你需要的 *.dylib,如libsqlite3.dylib文件。即可。
方法2 .Build Phases 配置
project -> Build Settings ->Linking -> Other Linker Flag
依据其命名规则,去掉前缀lib,和后缀.dylib,添加前缀-l,即-lsqlite3,即可解决。
添加 -l< 所需 dylib 的名称 >
例如:libsqlite3.dylib -> -lsqlite3
如果真的需要添加原来的动态库。可以根据以下步骤完成添加:
4. 在 /user/lib 目录下,你就可以找到 *.dylib 文件了,选择你需要的添加吧
转载请注明:夜阑小雨 » phonegap-cordova插件适配ios9