美文网首页
uni-App iOS首次安装允许网络请求后页面空白

uni-App iOS首次安装允许网络请求后页面空白

作者: 赵哥窟 | 来源:发表于2021-11-25 14:09 被阅读0次

iOS 10之后首次安装App只要请求网络都会有这个提示。


图片1.png

由于uni-app首页是动态化的,通过接口请求返回数据布局,如果停留几秒在点击无线局域网与蜂窝网络后,但是由于没有授权,所以接口无数据返回。所以出现了白屏。期初以为是uni的锅,后来调研后发现是iOS之后所有App都有这样的问题。

Android

Android首次网络请求,点击允许后才会往后面执行,所以Android并没有这个问。

iOS

ios 没有任何操作也会往后面执行,所以在没有授权网络的情况下是没有数据返回的。那么就针对iOS容错处理。

容错处理方式1

首次iOS写一个原生插件给uni

#import <CoreTelephony/CTCellularData.h>

//获取网络权限
- (void)checkNetworkPermissions{
    CTCellularData *cellularData = [[CTCellularData alloc] init];
    // 状态发生变化时调用
    cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState restrictedState) {
        switch (restrictedState) {
            case kCTCellularDataRestrictedStateUnknown:
                NSLog(@"蜂窝移动网络状态:未知");
                break;
            case kCTCellularDataRestricted:
                NSLog(@"蜂窝移动网络状态:关闭");
                break;
            case kCTCellularDataNotRestricted:
                NSLog(@"蜂窝移动网络状态:开启");
                break;

            default:
                break;
        }
    };
}

uni端轮询来获取权限,如果获取网络权限为开启的状态那么就网络请求刷新页面。如果轮询假设5次之后还是没有权限,此时可能用户点击了不允许。所以轮询5次后还是没有权限就提示用户进行网络设置,这些就iOS提供原生插件给uni调用就可以了。

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:^(BOOL success) {
 }];
容错处理方式2

进入首页什么都不做,只要网络请求没有数据返回就显示无网络的式样,加一个按钮,让用户自己做刷新操作。操作的时候在判断权限,如果用户能点击按钮。那说明要么用户允许网络了。要么用户点击不允许。所以 此时在判断一下网络权限。如果有权限请求刷新。没有权限提示做设置。

相关文章

网友评论

      本文标题:uni-App iOS首次安装允许网络请求后页面空白

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