美文网首页PerhapYs的OC学习日记
Share SDK 使用遇到的几个问题

Share SDK 使用遇到的几个问题

作者: 天空中的球 | 来源:发表于2015-11-03 16:34 被阅读5754次

    鉴于之前一直使用友盟,但是一直觉的其分享界面太丑了,从网上了解后,决定改一个样式,于是我就用了ShareSDK 试试,相对来说还是漂亮一些。

    UM_share.png ShareSDK.jpg

    怎么着,还是觉的后者漂亮

    但是其中我遇到了两个问题,特此记录下。

    一、怎么去掉 微信收藏

    因为这个微信收藏实际上对于我们的需求和用途来说,真的可以不需要。

     NSArray * shareList = [ShareSDK getShareListWithType:
                                  ShareTypeWeixiSession,
                                  ShareTypeWeixiTimeline,
                                  ShareTypeQQ,
                                  ShareTypeQQSpace,
                             nil];
    // 注意这个方法List
     [ShareSDK showShareActionSheet:container
                         shareList:shareList
                           content:publishContent
                     statusBarTips:YES
                       authOptions:nil
                      shareOptions:nil
                            result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
                             
                            }];
    
    二、QQ好友分享不好用

    打开QQ好友,直接分享不过去。

    #warning: 尚未配置QQ好友分享的URL Scheme:QQ41DAAE00, 无法进行分享
    

    同时打开QQ空间,还报这个错,但是可以分享成功

    -canOpenURL: failed for URL: "mqzoneopensdkapiV2://qzapp" - error: "(null)"
    -canOpenURL: failed for URL: "mqzoneopensdkapi19://qzapp" - error: "(null)"
    -canOpenURL: failed for URL: "mqzoneopensdkapi://qzapp" - error: "(null)"
    -canOpenURL: failed for URL: "mqzoneopensdk://qzapp" - error: "(null)"
    -canOpenURL: failed for URL: "mqzone://qzapp" - error: "(null)"
    
    但实际上我是已经配置好那个Scheme 和 白名单了,毕竟之前友盟是用的好好的,不过这两个问题都是我点击之后才会有的。

    第一、可以试试这个常用方法

    登录QQ互联注册成为开发者并登记应用取得AppId(如果配置QQ空间时已申请应用Id可以不需要重复申请,直接使用QQ空间中申请的Id)。 打开-Info.plist(代表你的工程名字)。添加一项用于QQ客户端回调的URL Scheme,其格式为:"QQ” + AppId的16进制(如果appId转换的16进制数不够8位则在前面补0,如转换的是:5FB8B52,则最终填入为:QQ05FB8B52 注意:转换后的字母要大写)。

    第二、上面那个也不管用时,尝试下以下方法

    重新申请了一个QQ的ID,尝试后发现还是不行,另外我还换了两个账户试试还是不行,就排除了账号ID的问题。

    第三、继续找原因,发现在ShareSDK中有一句这样的话。

    ShareSDK.png

    个人就觉的还是这个添加白名单的问题,但实际上我所有关于QQ空间的都增加啦啊

        <string>mqqapi</string>
        <string>mqq</string>
        <string>mqqOpensdkSSoLogin</string>
        <string>mqqconnect</string>
        <string>mqqopensdkdataline</string>
        <string>mqqopensdkgrouptribeshare</string>
        <string>mqqopensdkfriend</string>
        <string>mqqopensdkapi</string>
        <string>mqqopensdkapiV2</string>
        <string>mqqopensdkapiV3</string>
        <string>mqzoneopensdk</string>
        <string>wtloginmqq</string>
        <string>wtloginmqq2</string>
        <string>mqqwpa</string>
        <string>mqzone</string>
        <string>mqzonev2</string>
        <string>mqzoneshare</string>
        <string>wtloginqzone</string>
        <string>mqzonewx</string>
        <string>mqzoneopensdkapiV2</string>
        <string>mqzoneopensdkapi19</string>
        <string>mqzoneopensdkapi</string>
        <string>mqqbrowser</string>
        <string>mttbrowser</string>
    

    以上都是QQ能找的,当然要找其他白名单的,可以在SDK中的文档中找的。

    最后经过专人提醒后,确定还是QQ+ID没有配置好,只要将你申请到的appId(110039323乱写的)转换成日志中提醒的那个ID(41DAAE00)就好啦,QQ好友分享就可以啦。

    有点不理解,因为友盟不需要改,而ShareSDK应该是后台自己生产了自己的AppID,需要统一。另外-canOpenURL: failed for URL: "mqzone://qzapp" - error: "(null)"是系统警告可以不理会。

    另外

    另外记得上次打包上传的时候,遇到了一个bug,必须删除了一个QQ的删除info.plist里边的Executable file这一项才能成功,也在此标注下。

    Delete_Excutable
    三、判断是否安装微信或QQ,因为审核的时候要注意这个问题
        if((![QQApiInterface isQQInstalled]) && (![WXApi isWXAppInstalled]))
        {
              // 判断是否安装QQ和微信
        }
        else
        {
              // 有一个安装了,就显示
            
        }
    
       // 此处再具体根据是否安装微信或QQ来判断
        if(![QQApiInterface isQQInstalled])
        {
            // 只有微信
            shareList = [ShareSDK getShareListWithType:
                                            ShareTypeWeixiSession,
                                            ShareTypeWeixiTimeline,
                         nil];
        }
        
        if(![WXApi isWXAppInstalled])
        {
            // 只有QQ
            shareList = [ShareSDK getShareListWithType:
                                             ShareTypeQQ,
                                             ShareTypeQQSpace,
                         nil];
        }

    相关文章

      网友评论

      • 148144469e50:请教下 我遇到有个#warning:尚未支持平台[(null)(22)]分享! 这是什么原因了???
        天空中的球:@148144469e50 不清楚,好久没有接触它啦,建议直接看官方文档,问题也有专门解答的。
      • e0f6992dbc10:你好 我这里QQ登录也报类似的错 但是error为null啊 白名单啥的都搞好了的啊
        canOpenURL: failed for URL: "mqzone://sdk" - error: "(null)"
        迷矢考:@Aiewing 你的问题解决了吗?
        Aiewing:canOpenURL: failed for URL: "mqzone://sdk" - error: "(null)"
        我也是报错这个,但是我的第三方的登录返回不了用户的信息
        天空中的球:@yyqkn 嗯嗯,报那个错没关系的,只要可以正常分享就好啦,注意那个id的替换就好啦

      本文标题:Share SDK 使用遇到的几个问题

      本文链接:https://www.haomeiwen.com/subject/ogrxhttx.html