iOS 友盟最新SDK分享完成后回调方法未执行

在Appdelegate.m中

//#define __IPHONE_10_0    100000
#if __IPHONE_OS_VERSION_MAX_ALLOWED > 100000
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
{
    //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响。
    BOOL result = [[UMSocialManager defaultManager]  handleOpenURL:url options:options];
    if (!result) {
        // 其他如支付等SDK的回调
    }
    return result;
}

#endif

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];
    if (!result) {
        // 其他如支付等SDK的回调
    }
    return result;
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
    if (!result) {
        // 其他如支付等SDK的回调
    }
    return result;
}

如果还没有执行 确定你的 URL Schemes是否一致

屏幕快照 2017-03-28 上午10.54.25.png

附加
针对分享之后留在微信的情况

首先是点击分享标签时
[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];//移除监听
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 前言 友盟能实现分享功能,友盟+申请第三方账号的目的: 进行分享、授权操作需要在第三方平台创建应用并提交审核,友盟...
    CoderZb阅读 9,741评论 8 60
  • 目标 本篇文章讲的是我做的一个仿微信分享到朋友圈的功能。事先声明,楼主并不知道微信的分享具体是怎么实现的,只是按照...
    谦言忘语阅读 6,978评论 3 55
  • 近来在看李尚龙的《你所谓的稳定,不过是在浪费生命》,一本倾向鸡汤的书。喜欢作者是因为前一本作品,对自己的思想有着很...
    星如雨下阅读 296评论 2 1
  • 作为一个土生土长的农村人,求学于喧嚣的城市,总觉得少了些什么。是的,这里没有我散步的地方,我一直喜爱散步,算来这爱...
    路遥且念初阅读 493评论 4 2