kyuskoj 发表于 2022-3-29 21:55

Unity解决IOS通知授权后导致卡死bug


ios.jpeg

这是我之前遇到的一个Unity自身缺陷的bug,目前看官方并没有打算解决,也可能是我的Unity编辑器版本过低才没有引得关注吧,不过我自己定位到卡死代码的位置。找到UnityNotificationLifeCycleManager.h文件
- (void)load {    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{      ;      UNUserNotificationCenter* center = ;      center.delegate = ;    });}
这段代码就是管理弹出授权通知提示框代码,屏蔽里面方法那么久不会弹出提示框,导致卡死原因也是这个,每次启动app时候,就会导致这段代码在获取通知权限之前被执行,而此时是不需要弹出通知授权框的,IOS本身也不支持多次弹出授权提示窗,所以我的方法是,首次启动后,弹出提示框,之后的每次启动仅加上延时可解决。
+ (void)load {    [ performSelector:@selector(loadDelay) withObject:@"aaa" afterDelay:5.0];}- (void)loadDelay {    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{      ;      UNUserNotificationCenter* center = ;      center.delegate = ;    });}
页: [1]
查看完整版本: Unity解决IOS通知授权后导致卡死bug