iOS开发监听手机左上角系统自带的返回按钮

释放双眼,带上耳机,听听看~!

最早的时候,博主在做支付的时候牵涉到没支付成功,点击了系统左上角的自带返回按钮后支付失败的,微信无法拿到这个回调(不知道现在是否可以)。近日有小伙伴偶尔问题来这个问题,所以觉得有必要在这里公开一下这个方法,搜了下,网上关于这个方法内容很少,所以博主就发扬下极客精神:
PS:关于支付是否成功,当你的支付没有第三方的回调时,点击左上角返回按钮后,可以通过后台接口来查询是否支付成功。
1.使用一个方法

- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
//这里做了一个延时,很有必要,否则_isLeftBack值不会改变
_isLeftBack = NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if (!_isLeftBack) {
[[NSNotificationCenter defaultCenter]postNotificationName:@"leftBackPay" object:nil];
}
});
}

_isLeftBack在Appdelegate中,需要在几个方法中给赋值YES:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
_isLeftBack = YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
_isLeftBack = YES;
}

现在有很多拿回调URL的方法,都需要加上上面的赋值,自定义的就不需要了(比如说极光推送代理里面的)。

这样就可以了。这里强调下:
[[NSNotificationCenter defaultCenter]postNotificationName:@”leftBackPay” object:nil];
这个通知不用博主再讲解了吧,在需要的地方add一个你需要的通知即可在回到原界面的时候触发操作。

这里再说一个离开app后一切回来就会触发的操作:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(endBackground) name:UIApplicationWillEnterForegroundNotification object:nil];

可以用来做强制更新,也可根据自己需要来做操作。

人已赞赏
iOS文章

iOS开发点击tabbar某一个item,直接push跳转进入需要的页面,而不是切换tab

2021-2-2 7:45:28

iOS文章

iOS开发改变图片的颜色

2021-2-2 8:40:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索