iOS APP没有联网权限解决办法

       APP发布后,部分用户反馈手机可以连上WiFi,但是APP通信不上,有的手机甚至在设置界面就找不到APP,证书中加入了网络和WiFi服务,工程TARGETS 的 Capabilities中的Network Extension 和wireless a'ccessory configuration 都打开了,但是还是有这个问题。我以为每个APP应该是在首次安装的时候都会提示“是否允许连接无线数据”,到现在我才发现这真的只是我以为。。。我的APP有好多在不同的iPhone上首次运行并没有提示“是否允许连接无线数据”。

          出现这个问题,还有一个隐藏的因素,就是我的APP连接的WiFi不能上网,只能用来与控制卡发送和接收数据。

        又一次 拿来一台有问题的iPhone测试,发现把WiFi断开,这个时候连接的是4G,再去打开其他软件,再回到APP,就出现提示“是否允许连接无线数据”,然后我去下载了其他的软件,发现一个问题,就是有的在首次打开时候就用到网络的,肯定会提示,有这个提示的话,到设置界面也就显示了APP这个情况就感觉有点思路了。。。就是在程序入口的时候检测一下网络权限,因为有的iPhone会在程序第一次运行的时候直接提示“是否允许使用无线数据”,但是有的还不会提示。没有联网权限的时候使用一下网络,这个时候可能就会有这个提示了。

       解决办法:我在入口类里面先去检测APP是否有网络权限,检测到有问题的iPhone确实是没有联网权限,然后在在没有联网权限的时候去使用(连接)一下网络,这样就解决了APP不会提示“是否允许连接无线数据”的问题。

代码部分

1,检测联网权限

首先要导入   @import CoreTelephony;

- (void)checkNetwork{

    CTCellularData *cellularData = [[CTCellularData alloc]init];

    cellularData.cellularDataRestrictionDidUpdateNotifier =  ^(CTCellularDataRestrictedState state){

        BOOL _isRestricted = YES;

        //获取联网状态

        switch (state) {

            case kCTCellularDataRestricted:

                NSLog(@"Restricted"); //拒绝

                break;

            case kCTCellularDataNotRestricted:

                _isRestricted = NO;

                NSLog(@"Not Restricted"); //允许

                break;

            case kCTCellularDataRestrictedStateUnknown:

                NSLog(@"Unknown"); //未知

                break;

            default:

                break;

        };

        if (_isRestricted  == YES) {

            [self requestNetwork];

        }

    };

}

2,假设在程序没有联网权限的时候,去(使用网络)连接一下百度

- (void)requestNetwork{

    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {

    }];

}

你可能感兴趣的:(iOS APP没有联网权限解决办法)