美文网首页
微信分享完成之后,选择“留在微信”,不会走友盟的分享结果回调问题

微信分享完成之后,选择“留在微信”,不会走友盟的分享结果回调问题

作者: SuperZico | 来源:发表于2017-04-08 15:13 被阅读5086次

如果使用友盟SDK来完成微信消息的分享,如果分享成功选择返回程序,那么分享回调就可以正常的调用,可是如果选择留在微信,然后再通过左上角返回或者退回HOME之后再打开程序,都不会走分享回调.
可是有时候业务要求分享成功就需要做一些操作,比如分享后给予一些奖励之类的,如果别人分享成功之后没有获取到肯定是不对的.
解决方案最安全也是最简单的,就是在分享之前弹窗提示用户要选择返回程序才能正常使用,如果不想这么做,那么只能自己做一些处理了
首先是点击分享标签时

[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
  //在这里做一个表示符
  [[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"isShare"];
  //正常的分享流程

}

然后就是分享回调里

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options{
   //能走到这里表示用户选择的是直接返回程序
   //那么直接处理回调,删掉标识符
  [NSUserDefaults standardUserDefaults]removeObjectForKey:@"isShare"];
  //处理回调
}

那么如果用户选择留在微信,我们就需要在

- (void)applicationDidBecomeActive:(UIApplication *)application 

里面对标识符进行操作了,包括删除标识符,回调操作等等

当然可能操作并不是在appdelegate里进行的,我们可以在需要操作的地方对BecomeActive进行监听

//监听
1.[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];

2.//监听处理
- (void)applicationDidBecomeActive:(NSNotification *)notification {
 //删掉标识符
  [NSUserDefaults standardUserDefaults]removeObjectForKey:@"isShare"];
  //  回调操作
}
3.[[NSNotificationCenter defaultCenter] removeObserver:self];//移除监听

通过这种操作,只有一种可能会分享不成功也调用成功回调---用户既不选择留在微信也不返回程序,而是直接在跳转到微信后直接关掉微信,当然我只能默认用户不会做这种小概率操作了

相关文章

网友评论

      本文标题:微信分享完成之后,选择“留在微信”,不会走友盟的分享结果回调问题

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