iOS10 优化APP首次安装网络权限提示方案
我刚经历了一场末日(停电),特别是在你想写文档的时候。。。
言归正传,今天的问题是解决iOS10系统下首次按钮APP弹出的网络权限提示所带来了问题以及优化。
起因
问题
解决
1.根据CTCellularData类获取网络权限状态以及监听状态改变回调(推荐)
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- // Override point for customization after application launch.
- //1.获取网络权限 根绝权限进行人机交互
- if (__IPHONE_10_0) {
- [self networkStatus:application didFinishLaunchingWithOptions:launchOptions];
- }else {
- //2.2已经开启网络权限 监听网络状态
- [self addReachabilityManager:application didFinishLaunchingWithOptions:launchOptions];
- }
- //初始化window
- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
- [self.window setBackgroundColor:[UIColor whiteColor]];
- // //创建UI
- [self createWindowRootWithType:2];
- [self.window makeKeyAndVisible];
- return YES;
- }
- /*
- CTCellularData在iOS9之前是私有类,权限设置是iOS10开始的,所以App Store审核没有问题
- 获取网络权限状态
- */
- - (void)networkStatus:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- //2.根据权限执行相应的交互
- CTCellularData *cellularData = [[CTCellularData alloc] init];
- /*
- 此函数会在网络权限改变时再次调用
- */
- cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state) {
- switch (state) {
- case kCTCellularDataRestricted:
- NSLog(@"Restricted");
- //2.1权限关闭的情况下 再次请求网络数据会弹出设置网络提示
- [self getAppInfo];
- break;
- case kCTCellularDataNotRestricted:
- NSLog(@"NotRestricted");
- //2.2已经开启网络权限 监听网络状态
- [self addReachabilityManager:application didFinishLaunchingWithOptions:launchOptions];
- // [self getInfo_application:application didFinishLaunchingWithOptions:launchOptions];
- break;
- case kCTCellularDataRestrictedStateUnknown:
- NSLog(@"Unknown");
- //2.3未知情况 (还没有遇到推测是有网络但是连接不正常的情况下)
- [self getAppInfo];
- break;
- default:
- break;
- }
- };
- }
- /**
- 实时检查当前网络状态
- */
- - (void)addReachabilityManager:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- AFNetworkReachabilityManager *afNetworkReachabilityManager = [AFNetworkReachabilityManager sharedManager];
- //这个可以放在需要侦听的页面
- // [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(afNetworkStatusChanged:) name:AFNetworkingReachabilityDidChangeNotification object:nil];
- [afNetworkReachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
- switch (status) {
- case AFNetworkReachabilityStatusNotReachable:{
- NSLog(@"网络不通:%@",@(status) );
- break;
- }
- case AFNetworkReachabilityStatusReachableViaWiFi:{
- NSLog(@"网络通过WIFI连接:%@",@(status));
- if (self.mallConfigModel == nil) {
- [self getInfo_application:application didFinishLaunchingWithOptions:launchOptions];
- }
- break;
- }
- case AFNetworkReachabilityStatusReachableViaWWAN:{
- NSLog(@"网络通过无线连接:%@",@(status) );
- if (self.mallConfigModel == nil) {
- [self getInfo_application:application didFinishLaunchingWithOptions:launchOptions];
- }
- break;
- }
- default:
- break;
- }
- }];
- [afNetworkReachabilityManager startMonitoring]; //开启网络监视器;
- }
- - (void)getInfo_application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- //第三方库初始化
- [self initValueThirdParty:application didFinishLaunchingWithOptions:launchOptions];
- // //获取初始信息
- [self initData];
- //添加通知
- [self addNotification];
- }
这样也同时解决了用户如果选择不允许和限制两种情况,在用户没有统一联网的情况下,APP会显示没有网络的UI,重新进入APP会调用在不允许状态下会调用一个测试接口,APP会自动弹出重新选择网络权限以及说明的弹窗,进入设置修改过APP联网权限以后选择回到APP就会触发cellularDataRestrictionDidUpdateNotifier,在回调里进行相应的人机交互就可以了。
2.延迟请求
总结
转载于:https://www.cnblogs.com/Free-Thinker/p/8303261.html
iOS10 优化APP首次安装网络权限提示方案相关推荐
- Android 11.0 系统默认授予app安装权限(去掉app首次运行时权限授权弹窗)
目录 1.概述 2.系统默认授予app安装权限去掉app首次运行时权限授权弹窗功能分析
- iOS 10 的坑:新机首次安装 app,请求网络权限“是否允许使用数据”(转)
转载自: 文/戴仓薯(简书作者) 原文链接:http://www.jianshu.com/p/6cbde1b8b922 症状 iOS 10 之后,陆陆续续地有用户联系我们,说新机第一次安装.第一次启动 ...
- iOS 10 的坑:新机首次安装 app,请求网络权限“是否允许使用数据”
这个坑最近弄得我很抓狂,不过现在基本弄清楚了.记录一下过程中我收集到的信息,分享给大家. 症状 iOS 10 之后,陆陆续续地有用户联系我们,说新机第一次安装.第一次启动的时候,app 首屏一片空白, ...
- iOS 10 的坑:新机首次安装 app,请求网络权限“是否允许使用数据”_前进的火车_新浪博客...
这个坑最近弄得我很抓狂,不过现在基本弄清楚了.记录一下过程中我收集到的信息,分享给大家. 症状 iOS 10 之后,陆陆续续地有用户联系我们,说新机第一次安装.第一次启动的时候,app 首屏一片空白, ...
- Synology Drive Client首次安装登录,提示:用户名/密码无效或用户权限不足
安装Synology Drive Client登录的时候,提示用户名/密码无效或用户权限不足,检查了几次用户名密码都没有问题,域名也没有错,从网上找了找,说要设置权限,不管用 最后发现是用户名的问题 ...
- iOS10网络权限数据
参考地址:1.http://www.cocoachina.com/ios/20180723/24274.html https://blog.csdn.net/wang_bo_justone/art ...
- NETGEAR拒绝连接请求_iOS 14:为什么APP请求本地网络?想要扫描本地网络追踪
随着iOS 14正式版的推送升级到新版本的用户越来越多 , 不过也有用户发现升级后系统在某些方面似乎有些变化. 比如屏幕顶部经常提示某某应用读取剪切板.音视频通话时屏幕顶部出现圆点,还有弹出本地网络访 ...
- iOS-检测 iOS 系统网络权限被关闭
背景 一直都有用户反馈无法正常联网的问题,经过定位,发现很大一部分用户是因为网络权限被系统关闭,经过资料搜集和排除发现根本原因是: 第一次打开 app 不能访问网络,无任何提示 第一次打开 app 直 ...
- Android 11.0根据包名授予app所需的权限
在11.0 定制开发中第三方app第一次进入的时候 会弹出授予权限的权限框 有时候觉得挺麻烦的,所以根据客户要求 默认授予权限,这时我们就需要根据包名PackageName 来给与所需要的权限 首选来 ...
最新文章
- 51Nod-1082 与7无关的数【进制+打表】
- 实验吧 登录一下好吗
- c语言数码管编写程序,跪求单片机0~99数码管显示用C语言编写的程序
- boost::compressed_sparse_row_graph用法的测试程序
- 安卓项目中文件夹的作用
- 【Splay】波动值之和(金牌导航 Splay-1)
- 来到博客园许久,却还未开始写一篇自己的博客。从今天开始,每周都会更新自己的学习内容。...
- Android项目实战(十):自定义倒计时的TextView
- access实验报告体会_Access2010实验报告
- oracle11g查看数据库名称,oracle11g系列 事物和常用数据库对象
- 阿辉,Bullet In The Head
- 陕西国防学院计算机系网络教研室,陕西国防工业职业技术学院:全卫强副院长赴各院部调研教师发展工作...
- Could not execute JDBC batch update异常的解决办法
- thinkphp3.2 数据库 AND OR连缀使用
- 打印ASCII码 c++
- mp2 解码器kjmp输出32bit
- f2fs系列文章truncate
- hiho1718(LIS)
- 免费代理池(proxy_pool)搭建教程
- 机器人届的“擎天柱”来了!能够在空中变形以快速栖息的四旋翼机器人
热门文章
- python去除图片上的文字_Python图像处理之识别图像中的文字(实例讲解)
- js实现modbus_nodejs中使用modbus-serial库创建Modbus TCP读取设备的数据
- 数据库:SQLServer数据库备份方式介绍
- 10个常见的JS语言错误总汇
- 盘点八个程序员必备的代码编辑器
- 程序员的10个快乐瞬间!
- 北漂、海漂的你,每个月发薪资支付生活成本后还剩多少钱
- Android 第八课 创建自定义控件
- 前端开发时间格式的转换方法_开发人员投资时间而不浪费时间的10种方法
- 中台之上(二):为什么业务架构存在20多年,技术人员还觉得它有点虚?