适配iOS9

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

问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据。对ShareSDK来说,具体表现可能是,无法授权、分享、获取用户信息等。

还可能造成我们的编辑界面里传http之类的网络图片的时候,我们的编辑界面不会显示图片截图,解决的办法或者全面关闭https,允许使用http请求;或者把图片的域添加;又或者选择使用https的图片

解决方案(以下方法2选1):

(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

Facebook


facebook.com


fbcdn.net


akamaihd.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

Kakao

  • 无需配置

kakao.com

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:

来源:http://wiki.mob.com/ios9-%E5%AF%B9sharesdk%E7%9A%84%E5%BD%B1%E5%93%8D%EF%BC%88%E9%80%82%E9%85%8Dios-9%E5%BF%85%E8%AF%BB%EF%BC%89/

时间: 2024-11-02 13:39:48

适配iOS9的相关文章

iOS 适配iOS9

1.网络接口不支持https协议,在iOS9下 在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据. 解决方案(以下方法2选1): (1)暂时退回到http协议 具体方法: 在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型. 然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES: 2016.01.06更新: 随着SDK版本的更新,这里需要以下更新.

适配IOS9.0的那些坑!(主要说明ios9.0,64位设备,打开应用闪退的问题)

我平时的主要工作是维护公司的sdk,最近为了适配ios9.0可谓伤透了心.下面给大家分享下我这几天适配ios9.0遇到的一些问题和解决方法 希望能够帮助到大家,如果有错误的地方,还请大家能够多多指教. 首先,遇到比较多的问题,ChenYilong已经在cocoachina中讲得非常详细了,链接: http://www.cocoachina.com/ios/20150703/12392.html 非常感谢他,让我少走了很多弯路. 其次,是我遇到的两个问题,在网上没有找到相应的解释: 一.一些应用在

公司项目适配IOS9总结

1.JSONKit 项目在xcode7 IOS9 开发环境上报错,不能进行JSONSring和JSONData的使用 .在真机上没有问题,在模拟器上put和post数据适合JSONKit报空对象野指针的错误. JSONData //没有修改 NSData * jsonData = [[records keyValues] JSONData];//在ios9上JSONKit模拟器报错 //采用系统 NSData * jsonData = [NSJSONSerialization dataWithJ

适配IOS9中间遇到的一些问题

1 directory not found for option问题 警告如下: ld: warning: directory not found for option ‘-F/Applications/Xcode 7.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/Developer/Library/Frameworks’ 问题原因:Xcode7将fr

项目适配iOS9遇到的一些问题及解决办法

1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Security policy requires the use of a secure connection. 原因:iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS)新特性要求App内访问的网络必须使用HTTPS协议

项目适配iOS9遇到的一些问题及解决办法(更新两个小问题)

本文转载至 http://www.bubuko.com/infodetail-1110714.html http://www.jianshu.com/p/631bd7f12a38 1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Security policy requires the use of a secure connection. 原因:iOS9引

项目适配iOS9的bug

网络请求报错. 升级Xcode 7.0发现网络访问失败.输出错误信息#warning: 获取app配置信息失败: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.原因:iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS)新特性要求

适配iOS9遇到的一些问题_Scheme白名单_ Bitcode及解决办法

升级Xcode7 运行项目发现报错如下: 1.Scheme白名单问题 -canOpenURL: failed for URL: "weixin://app/wxdaae92a9cfe5d54c/" - error: "This app is not allowed to query for scheme weixin" 搜索后得知 近期苹果公司iOS 9系统策略更新,限制了http协议的访问,此外应用需要在"Info.plist"中将要使用的UR

友盟分享适配iOS9

在新发布的iOS9系统上围绕用户数据的安全性和体验新增了一些安全特性,同时也影响了应用的实现以及集成方式,为了保证良好的稳定性和体验,需要做如下处理: 1.  HTTP传输安全 以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求.目前可用如下两种方式保持用HTTP进行网络连接: A.在info.plist中加入安全域名白名单(右键info.plist用source code打开) <key>NSAppTransp