iOS12 踩坑持续更新

iOS12很快就要发布,项目的坑都填好了吗?没有!那还不赶紧填……

info.plist文件重复

Xcode10编译提示Multiple commands produce 'xxx/Info.plist',这是由于项目中存在重复命名的info.plist文件。

解决方式:

  1. xcworkspace项目: Xcode–File–Workspace Settings–Build System–Legacy Build System
  2. xcodeproj项目:Xcode–File–Project Settings–Build System–Legacy Build System

info文件重复.png

library not found for -l”stdc++.6.0.9”

提示library not found for -l”stdc++.6.0.9”,因为Xcode10去除了C++6.0.9的支持。

解决方式:

  1. TARGETS–Build Phases–Link Binary With Libraries,删除6.0.9依赖,需要的话对应添加libc++.tdb、libstdc++.tdb
  2. TARGETS–Build Settings–Other Linker Flags,删除 -l”stdc++.6.0.9”
  3. 如果是第三库引用了C++6.0.9库,那就只能联系服务方修改了

UIWebView、WKWebView播放视频

iOS12 上UIWebView、WKWebView含有视频,使用系统自带播放器全屏播放返回后,会存在 UIStatusBar 隐藏不见的问题。

解决方式:

注册UIWindowDidBecomeKeyNotification通知,视频播放完成主window成为KeyWindow的时候重新显示UIStatusBar。

//兼容iOS12 播放视频返回UIStatusBar的隐藏问题
if (@available(iOS 12.0, *)) {
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(videoFinished:)
                                                 name:UIWindowDidBecomeKeyNotification
                                               object:self.window];
}

//重新显示UIStatusBar
- (void)videoFinished:(NSNotification *)notification {
    [[UIApplication sharedApplication]setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}

CNCopyCurrentNetworkInfo

使用CNCopyCurrentNetworkInfo获取Wi-Fi名称,iOS12下获取不到

+ (id)wifiSSID {
    id value = @"";
    NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
    for (NSString *ifnam in ifs) {
        NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
        if (info[@"SSID"]) {
            value = info[@"SSID"];
        }
    }
    if (!value || [value length]==0) {
        NSLog(@"get WiFi SSID Error!!");
    }
    return value;
}

iOS12之后获取Wi-Fi信息,需要另外申请证书配置[说明]
(https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo)

CNCopyCurrentNetworkInfo.png

申请步骤请看关键字 NEHotspotHelper,或者自行搜索更多信息,这里提供一篇网文

iOS 无法获取 WiFi 列表?一定是因为你不知道这个框架