Sian 发表于 2015-9-18 17:50:57

iOS9 对ShareSDK的影响(适配iOS 9必读)


1、大部分社交平台接口不支持https协议。

问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据。对ShareSDK来说,具体表现可能是,无法授权、分享、获取用户信息等。还可能造成我们的编辑界面里传http之类的网络图片的时候,我们的编辑界面不会显示图片截图,解决的办法或者全面关闭https,允许使用http请求;或者把图片的域添加;又或者选择使用https的图片解决方案:
(1)、暂时退回到http协议。
具体方法:在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES;

(2)、设置域。可以简单理解成,把不支持https协议的接口设置成http的接口。
具体方法:1)、在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。2)、然后给它添加一个NSExceptionDomains,类型为字典类型;3)、把需要的支持的域添加给NSExceptionDomains。其中域作为Key,类型为字典类型。4)、每个域下面需要设置3个属性:NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads。均为Boolean类型,值分别为YES、NO、YES。细节提示:在iOS9中如果使用到网络图片,也要注意网络图片是否是HTTP的哦,如果是,也要把图片的域设置哦!
各平台设置域
新浪微博
[*]weibo.com,
[*]weibo.cn.
[*]sina.com.cn

腾讯微博
[*]qq.com

微信
[*]qq.com

QQ/QZone
[*]qq.com

易信
[*]无需配置

豆瓣
[*]无需配置

人人
[*]renren.com

开心网
[*]kaixin001.com,
[*]kaixin001.com.cn

有道
[*]youdao.com

Facebookfacebook.comfbcdn.netakamaihd.net
Twitter
[*]twitter.com

Google+
[*]无需配置

Instagram
[*]instagram.com,
[*]instagramstatic-a.akamaihd.net

Tumblr
[*]tumblr.com

Instapaper
[*]instapaper.com

Pinterest
[*]无需配置

明道
[*]无需配置

Evernote印象笔记
[*]无需配置

VK
[*]无需配置

pocket
[*]无需配置

LinkedIn
[*]无需配置

Dropbox
[*]无需配置

Flickr
[*]无需配置


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)、然后给它添加一个需要支持的项目,类型为字符串类型;
各平台OpenURL白名单说明
新浪微博
[*]sinaweibo,
[*]sinaweibohd,
[*]sinaweibosso,
[*]sinaweibohdsso,
[*]weibosdk,
[*]weibosdk2.5
[*][后两个若导入新浪SDK则需要]

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

豆瓣
[*]无需配置

开心网
[*]无需配置

微信
[*]wechat,
[*]weixin

易信
[*]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”这是系统打印的信息,目前是无法阻止其打印,即无法消除的
3.上述白名单,是技术人员通过不断的测试收集整理所得,如果各位开发者朋友发现上表格有所遗漏,请根据系统信息添加相关白名单即可。
如果没有设置白名单的话,系统的打印信息如图所示:添加完后,系统是依然会打印的,不过error会变成null:
4、其他:

在iOS9下,新浪微博SDK里面使用的JSONKit在部分机型可能导致崩溃。崩溃信息如下图。解决:暂时移除新浪微博SDK,等待新浪微博SDK的更新。影响:移除新浪微博SDK后,除了依赖SDK实现的跳到客户端的分享和关注官网微博等失效。其他主要功能如分享、SSO、获取用户资料等不受影响。




页: [1]
查看完整版本: iOS9 对ShareSDK的影响(适配iOS 9必读)