关于 iOS 14+ 本地网络权限弹窗机制求助

最近针对某应用,进行应用行为安全分析时。

测试同事反馈同一应用,有的设备不弹本地权限弹窗,有的会弹出本的权限申请弹窗。

经过排查发现 如果不加载自己写Tweak插件 弹窗不会弹出,因此得出结论是自己Tweak里面的某些Hook函数引起了app弹出本地网络权限的弹窗

最后,通过对代码片段进行测试,存在弹窗的地方 :获取IDFA、 获取IDFV、 智能家居HomeKit、 定位Location相关、 网络访问NetWork、 NFC、 Wi-Fi、 通知的API

测试一 : 注释以上地方的相关拦截函数—————— 不弹出

测试二 :在拦截函数内部不操作任何代码 直接调用原方法 ———— 不弹出

如:通知的API

-(void)requestAuthorizationWithOptions:(UNAuthorizationOptions)options completionHandler:(void (^)(BOOL granted, NSError *error))completionHandler{

    %orig;  // ——> 这里直接调用原方法
}
%end

测试三 :在拦截函数内部添加代码 (输处一句日志 )再调用原方法 ———— 弹出

如:通知的API

-(void)requestAuthorizationWithOptions:(UNAuthorizationOptions)options completionHandler:(void (^)(BOOL granted, NSError *error))completionHandler{

    NSLog(@"推送通知权权限申请");  // ——> 添加只打印一句日志的代码
    %orig; 
}
%end

之后又测试了

在Wi-F的两个函数定义一个String 的对象会弹出来
如果改成BOOL 测试的应用不会弹出本地权限弹窗

 // Wi-Fi Mac地址
-(NSString *)BSSID{
      NSString *_bssid = %orig;
      
      BOOL flags = YES;

      return _bssid;
}
// Wi-Fi 网络信号强度
-(double)signalStrength{
      double _signalStrength = %orig;
      
      BOOL flags = YES;

      return _signalStrength;
}

对此。不知道是因为什么机制导致的

小弟新手 特来请教各位了解这方面的大佬 给个建议见解或相关文献 指点一下

感谢各位大佬了

网络权限,国行设备弹窗,海外设备不弹窗?

目前的结论是弹窗的问题在Tweak里面引发的,如果针对:获取IDFA、 获取IDFV、 智能家居HomeKit、 定位Location相关、 网络访问NetWork、 NFC、 Wi-Fi、 通知的API 不进行拦截 就不会弹出

本地网络权限国行会弹窗 非国行的都不会弹的

可能hook框架会在初次用到OC对象之前执行一些初始化?
尝试添加一些逻辑不可达代码试一下,比如当IDFV获取为空时执行NSLog?