欢迎访问 夜阑小雨 我的学习碎片档案,这里记录了我的学习内容和工作中经验,希望给您带去帮助。

phonegap-cordova插件适配ios9

ios 夜阑小雨 5725℃ 0评论

phonegap-cordova插件适配ios9

由于苹果ios升级的ios9,xcode升级到xcode7,新的特性有所变化需要针对性的调整项目。

我们在开发phonegap项目中就遇到有问题。这里需要注意,特别是用到一些第三方的插件。

这里涉及到微信,支付宝,微信,sina微博,qq,腾讯微博,人人网等。

一些自己自定义的网络连接,图片连接。

1.app内访问的网络必须使用HTTPS协议。我们目前大多数请求还是用的http协议。

所以最简单的办法就是回退http协议。

具体方法:

在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。

然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES;

751FEFB8-86A2-45EC-8F61-A1A5081C5465

 

2、大部分第三方平台SDK不支持bitcode

问题描述:iOS 9新建项目默认需要支持bitcode,而不支持bitcode的SDK会导致无法编译运行。

解决方案:

(1)、暂时关闭对bitcode的支持(建议),方法如下图

(2)、移除不支持bitcode的平台SDK。

3148F4FF-C428-4DF7-81DE-01BCCF44FF63

3、添加Scheme白名单

问题描述:在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。

具体方法:

1)、在项目的info.plist中添加一LSApplicationQueriesSchemes,类型为Array。

2)、然后给它添加一个需要支持的项目,类型为字符串类型;

FBEF076A-611A-4B43-B8A9-F1825CC08FDA

 

以下列出了各类第三方应用的Scheme白名单,请选择性的添加。用到那个添加那个。

各平台OpenURL白名单说明

新浪微博

  • sinaweibo,
  • sinaweibohd,
  • sinaweibosso,
  • sinaweibohdsso,
  • weibosdk,
  • weibosdk2.5
  • [后两个若导入新浪SDK则需要]

腾讯微博

  • TencentWeibo,
  • tencentweiboSdkv2
  • [控制台会提示这两个,但是腾讯微博SDK已经弃用,可以忽略不配置]

豆瓣

  • 无需配置

开心网

  • 无需配置

微信

易信

  • yixin,
  • yixinopenapi

支付宝

  • alipay,
  • alipayshare

QQ

  • mqqOpensdkSSoLogin,
  • mqqopensdkapiV2,
  • mqqopensdkapiV3,
  • wtloginmqq2,
  • mqq,
  • mqqapi

QZONE

  • mqzoneopensdk,
  • mqzoneopensdkapi,
  • mqzoneopensdkapi19,
  • mqzoneopensdkapiV2,
  • mqqOpensdkSSoLogin,
  • mqqopensdkapiV2,
  • mqqopensdkapiV3,
  • wtloginmqq2,
  • mqqapi,
  • mqqwpa,
  • mqzone,
  • mqq

[注:若同时使用QQ和QZONE,则直接添加本格即可]

Google+

  • googlechrome,
  • googlechrome-x-callback,
  • hasgplus4,
  • com.google.gppconsent,
  • com.google.gppconsent.2.2.0,
  • com.google.gppconsent.2.3.0,
  • com.google.gppconsent.2.4.0,
  • com.google.gppconsent.2.4.1

人人网

  • renrenapi,
  • renrenios,
  • renreniphone,
  • renren,
  • 以及在使用人人SDK时所需配置的URL Scheme,例如:rm226427com.mob.demoShareSDK

Facebook

  • fbauth2

Twitter

  • 无需配置

Pocket

  • pocket-oauth-v1

Pinterest

  • pinit

Instagram

  • instagram

WhatsApp

  • whatsapp

Line

  • line

KakaoTalk

  • kakaolink

KaokaoStory

  • storylink

LinkedIn

  • 无需配置

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”这是系统打印的信息,目前是无法阻止其打印,即无法消除的。可以忽略!

如果没有设置白名单的话,系统的打印信息如图所示:

屏幕快照 2015-09-17 下午7.03.30

添加完后,系统是依然会打印的,不过error会变成null:

屏幕快照 2015-09-17 下午7.03.36

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

如果真的需要添加原来的动态库。可以根据以下步骤完成添加:

1. Xcode 7 在 Target > BuildPhases > Link Binary With Libraries > 点击 ‘+’按钮
2. 当我们选择添加 frameworks时, 你会发现你找不到*.dylib, 你看到的全是*.tbd 替代.
我们不深究其原因,来解决一下如果真得需要.dylib,怎么找到.dylib
3.首先选择 “Add other”
进入到查找窗口时按下 “CMD”+Shift+G (Go to folder) 然后在输入框输入 ‘ /usr/lib/’

4. 在 /user/lib 目录下,你就可以找到 *.dylib 文件了,选择你需要的添加吧

转载请注明:夜阑小雨 » phonegap-cordova插件适配ios9

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址