美文网首页
iOS 系统定位权限弹窗频繁弹出 - BUG

iOS 系统定位权限弹窗频繁弹出 - BUG

作者: 天空中的球 | 来源:发表于2021-04-23 16:07 被阅读0次

在我们某个新来的同学发现一个其自己手机出现定位权限弹窗频繁出现的问题,iPhone 7 Plus, iOS 13.3.1,很是奇怪。

一、问题

定位权限弹窗

主要是频繁弹出,很是奇怪的,于是看了代码发现原因。。。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(appEnterForgroundNoti)
                                             name:UIApplicationDidBecomeActiveNotification
                                           object:nil];
- (void)appEnterForgroundNoti {
    [self checkLocationAuth];
}
case kCLAuthorizationStatusNotDetermined:
    [[CLLocationManager new] requestAlwaysAuthorization];
    break;

说白了就是监听了 UIApplicationDidBecomeActiveNotification 的通知不断去检验定位权限的,然后导致的
由于此处是 [CLLocationManager new] 没有实际上没有持有 CLLocationManager 就直接被销毁了,同时每次弹出这个定位权限又触发了 UIApplicationDidBecomeActiveNotification 的通知啦,所以循环在不断调用了

二、解决

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(appEnterForgroundNoti)
                                             name:UIApplicationWillEnterForegroundNotification
                                           object:nil];
case kCLAuthorizationStatusNotDetermined:
    [self.locationManger requestAlwaysAuthorization];
    break;

持有下 CLLocationManager, 另外更改下通知UIApplicationWillEnterForegroundNotification

三、注意点

  • UIApplicationDidBecomeActiveNotification 触发时机
    • 在App中触发系统弹窗(如定位弹窗) - 再回到App 时
    • App启动
    • 重新进入前台
  • UIApplicationWillEnterForegroundNotification 触发时机
    • 只有重新进入前台

注意的是系统弹窗会触发 UIApplicationDidBecomeActiveNotification 的点,之前没有注意到这个点。

PS:至于其他机型系统为啥没出现频繁的问题呢,猜测是由于[CLLocationManager new] 的被释放时机不同导致的,具体的原因暂时未知,持续观察中。

相关文章

  • iOS 系统定位权限弹窗频繁弹出 - BUG

    在我们某个新来的同学发现一个其自己手机出现定位权限弹窗频繁出现的问题,iPhone 7 Plus, iOS 13....

  • iOS 11 定位权限弹窗不显示

    iOS 11 定位权限弹窗不显示-官方链接 百度SDK 升级之后,定位权限弹窗不显示,原因是苹果要求调用请求。 r...

  • iOS:权限管理框架

    说明 请求从未询问的权限会弹出系统的权限窗口 请求用户曾经拒绝的权限会展示弹窗提示用户,用户选择同意则跳入系统设置...

  • iOS13的蓝牙变化

    一、弹窗逻辑 1.蓝牙权限弹窗 在iOS13中初次调用蓝牙功能系统会调出权限弹窗,提示是否允许使用蓝牙,增加了一...

  • appium 弹窗处理

    测试过程中遇到两类弹窗: 系统权限弹窗 具体业务弹窗 系统权限弹窗 Android 系统权限弹窗一般出现在安装 a...

  • 痛点列表

    1.问题: ios系统每次打开新app,会弹出3个框:通知、定位、数据流量。连续弹窗体验很差,并且有的app会因为...

  • State 状态模式在 Android 多弹窗的应用

    序言 最近项目的首页弹窗进行调整,要加几个弹窗,而且还是要按顺序弹出的。原来的只有悬浮窗权限弹窗和存储权限弹窗,用...

  • flutter项目集成了amap_flutter_locatio

    问题:在flutter项目中集成了高德定位flutter SDK,在iOS上运行第一次安装不会弹出定位请求弹窗。 ...

  • UITextField为密码类型,ios13之后的系统,弹出存储

    当UITextField为密码类型,iOS13及以后系统,当输入完密码以后,系统会弹出存储密码的系统弹窗,此时不乱...

  • Windows 定位弹窗广告

    前言 Windows 系统经常自动弹出一些弹窗广告,让人烦不胜烦。 今天介绍下定位弹窗广告的源头程序,一举解决此类...

网友评论

      本文标题:iOS 系统定位权限弹窗频繁弹出 - BUG

      本文链接:https://www.haomeiwen.com/subject/ucucrltx.html