年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2416|回复: 0

[项目经验] iOS9 对ShareSDK的影响(适配iOS 9必读)

[复制链接]
  • TA的每日心情

    2024-10-15 10:05
  • 签到天数: 372 天

    [LV.9]以坛为家II

    发表于 2015-9-18 17:50:57 | 显示全部楼层 |阅读模式

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

    问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据。对ShareSDK来说,具体表现可能是,无法授权、分享、获取用户信息等。
    还可能造成我们的编辑界面里传http之类的网络图片的时候,我们的编辑界面不会显示图片截图,解决的办法或者全面关闭https,允许使用http请求;或者把图片的域添加;又或者选择使用https的图片
    解决方案:

    (1)、暂时退回到http协议。

    具体方法:
    在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。
    然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES;
    751FEFB8-86A2-45EC-8F61-A1A5081C5465.png


    (2)、设置域。可以简单理解成,把不支持https协议的接口设置成http的接口。

    具体方法:
    1)、在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。
    2)、然后给它添加一个NSExceptionDomains,类型为字典类型;
    3)、把需要的支持的域添加给NSExceptionDomains。其中域作为Key,类型为字典类型。
    4)、每个域下面需要设置3个属性:NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads。
    均为Boolean类型,值分别为YES、NO、YES。
    B4CB0038-520E-4E1A-BDD1-C5AB8627F770.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
    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

    • 无需配置

    2、大部分社交平台SDK不支持bitcode。

    问题描述:iOS 9新建项目默认需要支持bitcode,而不支持bitcode的SDK会导致无法编译运行。
    解决方案:
    (1)、暂时关闭对bitcode的支持(建议),方法如下图
    (2)、移除不支持bitcode的平台SDK。
    3148F4FF-C428-4DF7-81DE-01BCCF44FF63.png

    3、添加Scheme白名单。

    问题描述:在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。
    具体方法:
    1)、在项目的info.plist中添加一LSApplicationQueriesSchemes,类型为Array。
    2)、然后给它添加一个需要支持的项目,类型为字符串类型;
    FBEF076A-611A-4B43-B8A9-F1825CC08FDA.png
    各平台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.上述白名单,是技术人员通过不断的测试收集整理所得,如果各位开发者朋友发现上表格有所遗漏,请根据系统信息添加相关白名单即可。
    如果没有设置白名单的话,系统的打印信息如图所示:
    %E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7-2015-09-17-%E4%B8%8B%E5%8D%887.03.30.png
    添加完后,系统是依然会打印的,不过error会变成null:
    %E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7-2015-09-17-%E4%B8%8B%E5%8D%887.03.36.png

    4、其他:


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





    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-12-5 03:10 , Processed in 0.053018 second(s), 22 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表