2017iOS学习移动端开发

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

2017-04-06  本文已影响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设置

        <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)
上一篇下一篇

猜你喜欢

热点阅读