美文网首页
2018-05-23

2018-05-23

作者: chulijun | 来源:发表于2018-05-23 16:30 被阅读184次
问题说明:使用友盟的各三方平台分享功能,微信登陆功能,统计功能,推送功能。集成之后发现一个奇葩的问题
操作流程:
 1.打开app 未登陆状态下:点击分享信息到微信朋友圈,分享成功之后,点击微信登陆。这时候会报错2001.无法获取到登陆信息。报错如下(报错信息1),关闭app之后 重新登陆,可以获取登陆信息一切正常。
2.打开app 直接使用微信登陆,然后点击分享到微信朋友圈。一切正常
3.以上问题只是在未登陆状态下,使用朋友圈的时候才会出现,若是未登陆状态下,分享到微信好友,QQ,空间,微博,等 分享之后再去登陆都是可以正常登陆的
报错信息1
2018-05-23 16:35:56 UShare(Error):[UMSocialManager:1015](iOS.6.8.2): UMeng提示助手编号[core_auth_error_4]:<未发现平台相应类:wxsession
请检查:
1、平台类已实现<UMSocialPlatformProvider>协议
2、此平台枚举值在正常枚举区间内,参考UMSocialPlatformConfig.h —> UMSocialPlatformType枚举。 参考链接检查 https://at.umeng.com/mKfWve?cid=2723>
2018-05-23 16:35:56 UShare(Error):[UMSocialManager:477](iOS.6.8.2): UMeng提示助手编号[core_getuserinfo_error_1]:<未发现平台相应类:wxsession
请检查:
1、平台类已实现<UMSocialPlatformProvider>协议
2、此平台枚举值在正常枚举区间内,参考UMSocialPlatformConfig.h —> UMSocialPlatformType枚举。 参考链接检查 https://at.umeng.com/mKfWve?cid=2723>
2018-05-23 16:35:56.906924+0800 YunTui[21113:2357441] -[YTBaseWebViewController getAuthWithUserInfoFromWechat:withNonc:]_block_invoke [Line 321] ----- Error Domain=UMSocialPlatformErrorDomain Code=2001 "(null)" UserInfo={message=SDK Not Support, please check APP URL Scheme, and -ObjC flag in 'build setting', for more: http://dev.umeng.com/social/ios/quick-integration#2}
2018-05-23 16:36:01.247523+0800 YunTui[21113:2357441] UMLOG: beginbg id:17

这个问题确实够诡异的,开始并无从下手,因为获取微信登陆的信息,只有一个函数调用而已。那么只能从报错的信息入手了
文档报错信息描述:
UMSocialPlatformErrorType_NotSupport = 2001, // 不支持(url scheme 没配置,或者没有配置-ObjC, 或则SDK版本不支持或则客户端版本不支持)
然而这些检查一遍之后发现并没什么遗漏的,全部都配置了。然后就是排查原因:
1,使用友盟demo 调试一遍,按照上述未登陆状态下,先分享到朋友圈,然后再登陆的骚操作来一遍,验证一下是否这种操作能够正常,结果是正常的,然后找到其他的app 操作一遍发现这种操作是允许的。那么基本排除这种操作不允许的可能。
2。将SDK版本更新到最新状态,由于开始的时候使用的微信分享的是简版SDK ,更换到完整版的SDK。再操作问题依然会出现。
3.由于微信支付的是单独导入的SDK,和友盟的无关,但是这两个都包含同一个静态库。所以将微信支付的SDK删除,避免干扰。操作之后发现依然不成功。
4.查看集成代码,由于是自定义的多种分享面板,所以就会区分弹出哪一种面板的判断,然后发现,如果不弹出面板的话,直接将分享三方类型写成 朋友圈UMSocialPlatformType_WechatTimeLine。然后测试发现执行上述骚操作的话,就是正常的,竟然可以通过(说实话现在已经是第二天了,定位到这个问题,长长松了一口气,感觉已经看到胜利的曙光了,只要定位到问题,就解决了80%),然后就发现自定义的分享面板,首先调用UM的移除原来的分享平台,然后添加自己想要的分享平台。这个思路来自定义的分享面板。之前是完全没问题的,单步调试之后发现,每次经过这段代码之后,就会出现诡异的事情。(先分享朋友圈,再登陆,无法成功),然乎将代码改为全部调用友盟的分享平台。实验之后,直接成功。好了,问题解决。

注:问题定位在使用了自定义添加分享三方平台,而不是友盟提供的添加分享平台。描述不好说,上代码啦。

错误代码:
//添加自定义的平台
  [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_WechatSession
                                   withPlatformIcon:[UIImage imageNamed:@"umsocial_wechat"]
                                   withPlatformName:@"微信好友"];
  [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_WechatTimeLine
                                   withPlatformIcon:[UIImage imageNamed:@"umsocial_wechat_timeline"]
                                   withPlatformName:@"朋友圈"];
  [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_QQ
                                   withPlatformIcon:[UIImage imageNamed:@"umsocial_qq"]
                                   withPlatformName:@"QQ好友"];
  [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_Qzone
                                   withPlatformIcon:[UIImage imageNamed:@"umsocial_qzone"]
                                   withPlatformName:@"QQ空间"];
  [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_Sina
                                   withPlatformIcon:[UIImage imageNamed:@"sina_icon"]
                                   withPlatformName:@"新浪微博"];
  [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_WechatFavorite
                                   withPlatformIcon:[UIImage imageNamed:@"collect"]
                                   withPlatformName:@"收藏到微信"];
  [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin + 1
                                   withPlatformIcon:[UIImage imageNamed:@"link_copy"]
                                   withPlatformName:@"复制链接"];
  [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin + 2
                                   withPlatformIcon:[UIImage imageNamed:@"more_icon"]
                                   withPlatformName:@"更多"];
  
  //移除系统的平台。因为系统的默认时添加SDK 中包含的所有的平台
  [[UMSocialManager  defaultManager] removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_WechatSession),@(UMSocialPlatformType_WechatTimeLine),@(UMSocialPlatformType_QQ),@(UMSocialPlatformType_Qzone),@(UMSocialPlatformType_WechatFavorite),@(UMSocialPlatformType_Sina)]];
  [UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
      UMSocialPlatformType platType = UMSocialPlatformType_UnKnown;
      if (platformType == UMSocialPlatformType_WechatTimeLine) {
          platType = UMSocialPlatformType_WechatTimeLine;
      }else if (platformType == UMSocialPlatformType_WechatSession){
          platType = UMSocialPlatformType_WechatSession;
      }else if (platformType == UMSocialPlatformType_QQ){
          platType = UMSocialPlatformType_QQ;
      }else if (platformType == UMSocialPlatformType_Qzone){
          platType = UMSocialPlatformType_Qzone;
      }else if (platformType == UMSocialPlatformType_Sina){
          platType = UMSocialPlatformType_Sina;
      }else if (platformType == UMSocialPlatformType_WechatFavorite){
          platType = UMSocialPlatformType_WechatFavorite;
      }else if (platformType == UMSocialPlatformType_UserDefine_Begin + 1){
          platType = UMSocialPlatformType_UserDefine_Begin + 1; //复制链接
          _indexType = 1;
      }else{
          platType = UMSocialPlatformType_UserDefine_Begin + 2; //系统
          _indexType = 2;
      }
      [self shareWebPageToPlatformType:platType andModel:model];
  }];

正确代码:
 [UMSocialUIManager setPreDefinePlatforms:@[@(UMSocialPlatformType_WechatSession),
                                               @(UMSocialPlatformType_WechatTimeLine),
                                               @(UMSocialPlatformType_WechatFavorite),
                                               @(UMSocialPlatformType_QQ),
                                               @(UMSocialPlatformType_Qzone),
                                               @(UMSocialPlatformType_Sina),
                                               @(UMSocialPlatformType_UserDefine_Begin+1),
                                               @(UMSocialPlatformType_UserDefine_Begin+2),
                                               ]];
    //设置分享面板的显示和隐藏的代理回调
    [UMSocialUIManager setShareMenuViewDelegate:self];
    
    [UMSocialUIManager removeAllCustomPlatformWithoutFilted];
    
    [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin+1
                                     withPlatformIcon:[UIImage imageNamed:@"link_copy"]
                                     withPlatformName:@"复制链接"];
    [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin+2
                                     withPlatformIcon:[UIImage imageNamed:@"more_icon"]
                                     withPlatformName:@"更多"];
    
    [UMSocialShareUIConfig shareInstance].sharePageGroupViewConfig.sharePageGroupViewPostionType = UMSocialSharePageGroupViewPositionType_Bottom;
    [UMSocialShareUIConfig shareInstance].sharePageScrollViewConfig.shareScrollViewPageItemStyleType = UMSocialPlatformItemViewBackgroudType_IconAndBGRadius;
    
    [UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
        if (platformType == UMSocialPlatformType_UserDefine_Begin+1) {
            NSLog(@"点击演示添加Icon后该做的操作");
            dispatch_async(dispatch_get_main_queue(), ^{
                _indexType = 1;
                if (self.sharesCustomBlock) {
                    self.sharesCustomBlock(_indexType);
                }
            });
        }else if (platformType == UMSocialPlatformType_UserDefine_Begin+2){
            [self shareToSysWithModel:self.shareModel];
        }else{
            [self shareWebPageToPlatformType:platformType andModel:model];
        }
    }];

相关文章

网友评论

      本文标题:2018-05-23

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