如果使用友盟SDK來完成微信消息的分享,如果分享成功選擇返回程序,那么分享回調(diào)就可以正常的調(diào)用,可是如果選擇留在微信,然后再通過左上角返回或者退回HOME之后再打開程序,都不會走分享回調(diào).
可是有時候業(yè)務要求分享成功就需要做一些操作,比如分享后給予一些獎勵之類的,如果別人分享成功之后沒有獲取到肯定是不對的.
解決方案最安全也是最簡單的,就是在分享之前彈窗提示用戶要選擇返回程序才能正常使用,如果不想這么做,那么只能自己做一些處理了
首先是點擊分享標簽時
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
//在這里做一個表示符
[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"isShare"];
//正常的分享流程
}
然后就是分享回調(diào)里
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options{
//能走到這里表示用戶選擇的是直接返回程序
//那么直接處理回調(diào),刪掉標識符
[NSUserDefaults standardUserDefaults]removeObjectForKey:@"isShare"];
//處理回調(diào)
}
那么如果用戶選擇留在微信,我們就需要在
- (void)applicationDidBecomeActive:(UIApplication *)application
里面對標識符進行操作了,包括刪除標識符,回調(diào)操作等等
當然可能操作并不是在appdelegate里進行的,我們可以在需要操作的地方對BecomeActive進行監(jiān)聽
//監(jiān)聽
1.[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
2.//監(jiān)聽處理
- (void)applicationDidBecomeActive:(NSNotification *)notification {
//刪掉標識符
[NSUserDefaults standardUserDefaults]removeObjectForKey:@"isShare"];
// 回調(diào)操作
}
3.[[NSNotificationCenter defaultCenter] removeObserver:self];//移除監(jiān)聽
通過這種操作,只有一種可能會分享不成功也調(diào)用成功回調(diào)---用戶既不選擇留在微信也不返回程序,而是直接在跳轉(zhuǎn)到微信后直接關掉微信,當然我只能默認用戶不會做這種小概率操作了