iOS13适配研究

热门标签

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

iOS13今年秋季会发布,最近深入研究了下公司APP适配iOS13的注意点,适配如下。

1.由于Xcode10移除了libstdc++,之前虽然采用拷贝粘贴的方案将Xcode9的相关c++库复制到Xcode10还可以完美运行,但是现在最新的Xcode11对于c++库的引用又发生了改变,虽然libstdc++拷贝粘贴方案对于部分功能起效,但是由于App太多老旧的C++代码,依旧导致项目无法正常编译,所以必须要删除历史遗留的libstdc++和其他老旧的c++的代码,App才能被编译,坑!

2.关于推送deviceToken获取逻辑
目前App推送token是按照以前的老办法来获取:

    NSString * hexToken = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; //去掉"<>"
    hexToken = [[hexToken description] stringByReplacingOccurrencesOfString:@" " withString:@""];//去掉中间空格

但是网上有部分开发者反馈iOS13上的description方法对应存在缺陷,甚至会闪退,无法准确获取到token。

虽然自测没有复现,但是为了安全考虑换了种大家推崇的获取方式

    if (![deviceToken isKindOfClass:[NSData class]]) return;
    NSMutableString *deviceTokenString = [NSMutableString string];
    const char *bytes = deviceToken.bytes;
    NSInteger count = deviceToken.length;
    for (int i = 0; i < count; i++) {
        [deviceTokenString appendFormat:@"%02x", bytes[i]&0x000000FF];

当然友盟官方也给出了相应的获取方式:
https://developer.umeng.com/docs/66632/detail/126489

    if (![deviceToken isKindOfClass:[NSData class]]) return;
    const unsigned *tokenBytes = (const unsigned *)[deviceToken bytes];
    NSString *hexToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
                          ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
                          ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
                          ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];

3.基于iOS13一运行APP,发现界面变样了

 

iOS13适配研究
image.png

原来是Apple官方修改了控制器的 modalPresentationStyle 默认值,以前都是默认UIModalPresentationFullScreen,现在新增了个UIModalPresentationAutomatic,自动把以前默认值修改了。

它影响App所有的present出的界面,所以必须要手动将 modalPresentationStyle一个个设为UIModalPresentationFullScreen,真的坑!

4.App运行过程中,会产生奔溃,仔细定位,发现Apple新增了imageWithTintColor方法

iOS13适配研究

与App分类中的自定义的方法名产生冲突了

iOS13适配研究

所以需要重新修改方法名进行适配

5.注意iOS13新增深色模式,需要适配,但发现很多主流App都没有支持深色模式,如果你公司的App也没有支持深色模式的话,需要在Plist文件中设置——添加"User Interface Style"键,将值设为"UIUserInterfaceStyleLight"

 <key>UIUserInterfaceStyle</key> 
<string>UIUserInterfaceStyleLight</string>

否则深色模式下,UI展示颜色上会有问题!

以上

 

标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS13适配研究》 发布于2019-10-23

分享到:
赞(0)

评论 抢沙发

4 + 5 =


iOS13适配研究

长按图片转发给朋友

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录