Xcode6升级到Xcode7 适配问题
问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据。对ShareSDK来说,具体表现可能是,无法授权、分享、获取用户信息等。
还可能造成我们的编辑界面里传http之类的网络图片的时候,我们的编辑界面不会显示图片截图,解决的办法或者全面关闭https,允许使用http请求;或者把图片的域添加;又或者选择使用https的图片
解决方案:
(1)、暂时退回到http协议。
具体方法:
在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。
然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES;
![](https://i-blog.csdnimg.cn/blog_migrate/8522f434581c4f76aa0c5e394e20559b.webp?x-image-process=image/format,png)
(2)、设置域。可以简单理解成,把不支持https协议的接口设置成http的接口。
具体方法:
1)、在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。
2)、然后给它添加一个NSExceptionDomains,类型为字典类型;
3)、把需要的支持的域添加給NSExceptionDomains。其中域作为Key,类型为字典类型。
4)、每个域下面需要设置3个属性:NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads。
均为Boolean类型,值分别为YES、NO、YES。
![](https://i-blog.csdnimg.cn/blog_migrate/4a6b3843760cf3a07f2b14e717be6ced.webp?x-image-process=image/format,png)
细节提示:在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
facebook.com
fbcdn.net
akamaihd.net
twitter.com
Google+
无需配置
instagram.com
instagramstatic-a.akamaihd.net
Tumblr
tumblr.com
Instapaper
instapaper.com
无需配置
明道
无需配置
Evernote印象笔记
无需配置
VK
无需配置
无需配置
无需配置
Dropbox
无需配置
Flickr
无需配置
问题描述:iOS 9新建项目默认需要支持bitcode,而不支持bitcode的SDK会导致无法编译运行。
解决方案:
(1)、暂时关闭对bitcode的支持(建议),方法如下图
(2)、移除不支持bitcode的平台SDK。
![](https://i-blog.csdnimg.cn/blog_migrate/e4aba4ed0bda148c0e05f6c3b6bc30c0.webp?x-image-process=image/format,png)
问题描述:在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。
1)、在项目的info.plist中添加一LSApplicationQueriesSchemes,类型为Array。
2)、然后给它添加一个需要支持的项目,类型为字符串类型;
![](https://i-blog.csdnimg.cn/blog_migrate/c2afbdb67004108460f04d94e550dfb2.webp?x-image-process=image/format,png)
各平台OpenURL白名单说明
新浪微博
sinaweibo,
sinaweibohd,
sinaweibosso,
sinaweibohdsso,
weibosdk,
weibosdk2.5
[后两个若导入新浪SDK则需要]
腾讯微博
TencentWeibo,
tencentweiboSdkv2
[控制台会提示这两个,但是腾讯微博SDK已经弃用,可以忽略不配置]
豆瓣
无需配置
开心网
无需配置
微信
wechat,
weixin
易信
yixin,
yixinopenapi
支付宝
alipay,
alipayshare
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
fbauth2
无需配置
pocket-oauth-v1
pinit
Line
line
KakaoTalk
kakaolink
KaokaoStory
storylink
无需配置
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.上述白名单,是技术人员通过不断的测试收集整理所得,如果各位开发者朋友发现上表格有所遗漏,请根据系统信息添加相关白名单即可。
如果没有设置白名单的话,系统的打印信息如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/bcb40b7bbbb1c66bc725a04f13810451.webp?x-image-process=image/format,png)
添加完后,系统是依然会打印的,不过error会变成null:
![](https://i-blog.csdnimg.cn/blog_migrate/2b7088a6891d59be4abc33f7e5eb6a40.webp?x-image-process=image/format,png)
在iOS9下,新浪微博SDK里面使用的JSONKit在部分机型可能导致崩溃。崩溃信息如下图。
解决:暂时移除新浪微博SDK,等待新浪微博SDK的更新。
影响:移除新浪微博SDK后,除了依赖SDK实现的跳到客户端的分享和关注官网微博等失效。其他主要功能如分享、SSO、获取用户资料等不受影响。
![](https://i-blog.csdnimg.cn/blog_migrate/31d3846c41a22d40565be3b73dab3720.webp?x-image-process=image/format,png)
5.关于lib库文件
Update your library with bit code, or you'll get warnings like:
(null): URGENT: all bitcode will be dropped because'/Users/myname/Library/MobileDocuments/com~apple~CloudDocs/foldername/appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)'was built without bitcode. You must rebuild it with bitcode enabled(Xcode setting ENABLE_BITCODE), obtain an updated library from thevendor, or disable bitcode for this target. Note: This will be anerror in the future.
Say NO to Enable Bitcode in your target Build Settings