美文网首页2017iOS学习移动端开发
iOS 10.3重大更新!可更换应用图标!

iOS 10.3重大更新!可更换应用图标!

作者: 凉风起君子意如何 | 来源:发表于2017-04-06 17:18 被阅读155次

    威锋网讯,苹果昨天推送了 iOS 10.3 的正式版,在该版本中包括一项新功能,它允许开发人员在安装应用后更改应用图标,并将自定义应用图标带入到 iOS 的主屏幕。 MLB.com At Bat 和 NHL iOS 应用现在就正在利用新的自定义图标功能。
    在MLB.com At Bat 应用中,用户可以使用 MLB 俱乐部品牌的应用图标来自定义应用的主屏幕图标,来代表他们最喜欢的球队。同样地,在 NHL 应用中,应用图标也可以使用球队队徽而不是标准的 NHL 应用图标。
    要更改图标,首先需要 iOS 10.3 的环境。然后用户需要前往应用中的更多-设置-主屏幕图标,然后选择一个队徽。
    据TechCrunch 指出,虽然现在开发者可以提供不同的应用图标,但仍然无法提供动态图标,比如可以显示当前温度的天气应用图标。自定义主屏图标,也就是苹果提到的“用户可选择的应用图标”意味着未来将有大量的应用支持图标更换。
    当然,苹果对应用图标有着严格的规定,例如视觉一致性,简洁的图标交换界面和明确的用户权限来更改应用的图标。

    体育方面的app还是可行,因为你喜欢哪支球队, 就可以把这个app的icon换做那个球队的队徽或者别的你喜欢的,感觉还是挺爽的。但是对其它类型一些app ,好像就不是很重要了,对用户来说,可能不会去怎么关心应用图标到底怎么样,习惯了就好(当然不能太突兀了)。

    不多说,下面两步搞定!后面附有demo

    一,info.plist设置

    • 主icon图标设置

    • 导入自定义icon图标

    • Add row 如下 Icon files (iOS 5)

    • Scource code方式打开info.plist,把如下代码copy进去

            <key>CFBundlePrimaryIcon</key>
            <dict>
                <key>CFBundleIconFiles</key>
                <array>
                    <string>Icon60X60</string>
                </array>
            </dict>
            <key>CFBundleAlternateIcons</key>
            <dict>
                <key>newIcon1</key>
                <dict>
                    <key>CFBundleIconFiles</key>
                    <array>
                        <string>newIcon1</string>
                    </array>
                    <key>UIPrerenderedIcon</key>
                    <false/>
                </dict>
                <key>newIcon2</key>
                <dict>
                    <key>CFBundleIconFiles</key>
                    <array>
                        <string>newIcon2</string>
                    </array>
                    <key>UIPrerenderedIcon</key>
                    <false/>
                </dict>
                <key>newIcon0</key>
                <dict>
                    <key>CFBundleIconFiles</key>
                    <array>
                        <string>newIcon0</string>
                    </array>
                    <key>UIPrerenderedIcon</key>
                    <false/>
                </dict>
            </dict>
    

    二,相关代码设置

    - (IBAction)clickBtn:(id)sender {
        [self changeAppIcon];
    }
    
    - (void)changeAppIcon
    {
        NSMutableArray *icomNameArray = [NSMutableArray arrayWithObjects:@"newIcon0",@"newIcon1",@"newIcon2", nil];
        int i = (arc4random() % icomNameArray.count);
        
        //ios10.3之后,更改icon图标的api才有效
        if ([UIApplication sharedApplication].supportsAlternateIcons) {
            NSLog(@"you can change this app's icon");
        }else{
            NSLog(@"you can not change this app's icon");
            return;
        }
        
        NSString *iconName = [[UIApplication sharedApplication] alternateIconName];
        
        if (iconName) {
            // change to primary icon
            [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    NSLog(@"set icon error: %@",error);
                    return;
                }
                NSLog(@"The alternate icon's name is %@",iconName);
            }];
        }else{
            // change to alterante icon,随机获取alternate icon
            [[UIApplication sharedApplication] setAlternateIconName:[NSString stringWithFormat:@"newIcon%d",i] completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    NSLog(@"set icon error: %@",error);
                    return;
                }
                NSLog(@"The alternate icon's name is %@",iconName);
            }];
            
        }
    }
    

    主要就是这个API:

            }];```
    
    以上步骤都设置好后,运行,搞定!
    
    ![](http:https://img.haomeiwen.com/i2026235/9a68d9303cfe9d8e.gif?imageMogr2/auto-orient/strip)
    
    
    ***
    [github demo,别忘了帮忙star😝 ](https://github.com/caohuoxia/CHXIconAlternateDemo/tree/master)

    相关文章

      网友评论

        本文标题:iOS 10.3重大更新!可更换应用图标!

        本文链接:https://www.haomeiwen.com/subject/woyqattx.html