ios 12正式发布之后,我们也面临着一些兼容的一些问题适配,总结了以下几个方面

iOS12 适配相关

1.iOS 12系统版本号判断的增加:
2. iOS12新功能将释放Siri潜力 借助Shortcuts

3.iphoneXS iphoneXSMax IphoneXR 的分辨率

iPhone X (开发应按照1125x2436适配)

iPhone XR (开发应按照828x1792适配)

iPhone XS (开发应按照1125x2436适配)

Xcode10解压了一下,开始初步评估一下适配

问题与解决

重复文件报错

一上来就是build没2秒就报错了,看报错的说法是有重复的info.plist。

vite 兼容IOS13_vite 兼容IOS13

我们组件化后把一些三方库和封装方法打成了一个私有库。进去看了一下,我们使用了 阿里云统计 + 推送 + Alipay ,里面确实有好几个 info.plist ,删除了就好了。

vite 兼容IOS13_vite 兼容IOS13_02

c++.6.0.9消失了?

报错: library not found for -lstdc++.6.0.9

vite 兼容IOS13_vite 兼容IOS13_03

第一反应是去 Build Phases 里的 Link Binary With Libraries 进行添加,然后发现选择 frameworks and libraries 里已经没有了这个库了😂,又回去看了一下Xcode9里是有的。

vite 兼容IOS13_vite 兼容IOS13_04

但是因为之前在Xcode9上是正常跑的项目,而且我们组件化后,依赖是在私有库的podspec里定义的,全局搜了下所有的podspec并没有依赖过这个lib。

想起来 pod isntall 后会有一个 Pods-xxxx.xcconfig 文件,果然找到了这个 -l stdc++.6.0.9 ,但是这边是汇总了所有的依赖,无法找到源头。

答案是就如下图,因为删掉了这个依赖,那依赖这个lib的源码就出现了一些调用方法的报错,如下图,很明显的发现了这个叫 libQYSDK.a 的库。恩,就是三方库 七鱼客服 了😂,赶紧联系了一波工具提供方。

iOS开发,适配iOS 12 (问题收集)

  • 1.无法获取用户当前连接wifi的ssid; 描述:在iOS 12 beta中发现,使用之前获取ssid的代码(如下:)只会得到空值;


• `#import <SystemConfiguration/CaptiveNetwork.h>
// NSString *ssid = infossid[@“SSID”];
• (id)FetchSSIDInfo
 {
 id infossid = nil;
 NSArray *ifs = CFBridgingRelease(CNCopySupportedInterfaces());
 for (NSString *ifnam in ifs) {
 infossid = CFBridgingRelease(CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam));
 if (infossid && [infossid count]) {
 return infossid;
 }
 }
 return infossid;
 }

解决:重要
要在iOS 12及更高版本中使用此功能,请在Xcode中为您的应用启用Access WiFi信息功能。 启用此功能后,Xcode会自动将Access WiFi信息权利添加到您的权利文件和应用程序ID中。
苹果官方文档:CNCopyCurrentNetworkInfo