前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >uni-App iOS首次安装允许网络请求后页面空白

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

作者头像
赵哥窟
发布2021-12-16 09:39:40
3.6K0
发布2021-12-16 09:39:40
举报
文章被收录于专栏:日常技术分享日常技术分享

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

图片1.png

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

Android

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

iOS

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

容错处理方式1

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

代码语言:javascript
复制
#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调用就可以了。

代码语言:javascript
复制
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:^(BOOL success) {
 }];
容错处理方式2

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021/11/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Android
  • iOS
    • 容错处理方式1
      • 容错处理方式2
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档