当前位置: 首页 > news >正文

Wifi环境下Unity开发iOS应用启动后HTTPS请求未弹出是否允许无线数据使用数据的弹窗

情况说明

笔者项目在首次启动,登录界面点击登录按钮会先HTTPS请求创建帐号,但是在WIFI网络下,请求后一直提示网络连接失败。但是切换到流量包后,则会弹出"无线数据"使用数据的弹窗,选择允许后则可顺利进入。

分析

错误原因就是在WIFI环境下HTTPS请求未能弹出权限界面,导致当前无线数据的权限是关闭的,而使用流量时又可以内部触发弹出权限选择界面。

具体的原因网上说法也很多,比如:

  • WIFI设置了代理,流量未设置代理。导致WIFI环境下的HTTPS请求被拦截,未能弹出选择窗口。
  • Info.list下未配置NSAllowsArbitraryLoads权限为true

上述笔者这边都排除了,但是有个可能是笔者这边HTTPS请求是使用的是一个比较老的稳定性挺好,且用于多个线上项目的Best HTTP插件,有可能是Unity升级后插件适配的问题?

解决方案

一般而言App首次启动,网络请求时都会弹出是否允许使用数据的弹窗。但是这种坑就遇到了,又不想换Best HTTP插件。

遂写了个iOS插件,在进入登录界面时模拟一次网络请求。代码如下:

#import <Foundation/Foundation.h>@interface IWebRequestPermission : NSObject#ifdef __cplusplus
extern "C" {
#endifBOOL IsConnectedToInternet();void TryRequestPermissionIfNeeded();
#ifdef __cplusplus
}
#endif
@end
#import "WebRequestPermission.h"
// 引入 SystemConfiguration.framework
#import <SystemConfiguration/SystemConfiguration.h>@implementation IWebRequestPermission
// 检查当前网络连接状态
BOOL IsConnectedToInternet() {BOOL isConnected = NO;SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, "www.baidu.com");SCNetworkReachabilityFlags flags;if (SCNetworkReachabilityGetFlags(reachability, &flags)) {isConnected = ((flags & kSCNetworkReachabilityFlagsReachable) != 0);}CFRelease(reachability);return isConnected;
}// 在应用启动时尝试发起一个简单的网络请求
void TryRequestPermissionIfNeeded() {if (IsConnectedToInternet()) {NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {// 处理网络请求的结果}];[dataTask resume];}
}
@end

在进入登录界面时Unity侧调用TryRequestPermissionIfNeeded()即可

相关文章:

  • (一)Neo4j下载安装以及初次使用
  • 深入理解并优化Android中的文件描述符(FD)
  • C++进阶之路---手撕“红黑树”
  • docker init 生成Dockerfile和docker-compose.yml —— 筑梦之路
  • 27-4 文件上传漏洞 - 黑名单绕过
  • 确保云原生部署中的网络安全
  • 第二十二章 构建和配置 Nginx (UNIX® Linux macOS) - 示例:为特定路径上的所有流量启用 CSP 路由
  • JavaScript 变量的隐藏规则
  • 【algorithm】算法基础课---排序算法(附笔记 | 建议收藏)
  • Odoo17免费开源ERP开发技巧:如何在表单视图中调用JS类
  • 基于深度学习YOLOv8+Pyqt5的工地安全帽头盔佩戴检测识别系统(源码+跑通说明文件)
  • 开源堡垒机Jumpserver安装教程
  • 阿里云-云服务器ECS新手如何建网站?
  • Java Web项目—餐饮管理系统Day10-Linux-基本知识点(一)
  • 深度学习实战模拟——softmax回归(图像识别并分类)
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 2017-08-04 前端日报
  • Akka系列(七):Actor持久化之Akka persistence
  • Android Volley源码解析
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • go append函数以及写入
  • go语言学习初探(一)
  • nodejs:开发并发布一个nodejs包
  • Redis学习笔记 - pipline(流水线、管道)
  • vue-cli3搭建项目
  • 代理模式
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 再谈express与koa的对比
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 【干货分享】dos命令大全
  • Linux权限管理(week1_day5)--技术流ken
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​决定德拉瓦州地区版图的关键历史事件
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #pragma pack(1)
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (三)mysql_MYSQL(三)
  • (四)模仿学习-完成后台管理页面查询
  • (转)jQuery 基础
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net专家(高海东的专栏)
  • /etc/fstab 只读无法修改的解决办法
  • @JoinTable会自动删除关联表的数据
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务