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

如果使用友盟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];//移除监听

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,349评论 25 708
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,934评论 0 15
  • 2017.04.10 咪蒙公众号 原标题 “因为长得丑,我亏了150万” 我来改标题 ①告诉你一个密秘好看真的很值...
    永利哥阅读 254评论 0 1
  • 武汉丰立装饰集团---武汉最大的整装企业 在武汉,每3户业主就有1户选择丰立装饰 至今,已为11798户业主提供高...
    减法家装阅读 218评论 0 0
  • 在这个越来越先进的时代,已经越来越少人听广播了。 但并不意味着这会消失。 朔间零,自称吸血鬼的感情广播电台主持人。...
    阿涼阅读 1,421评论 0 5