美文网首页iOS技术交流iOS Developer
iOS10.3:动态改变APP图标

iOS10.3:动态改变APP图标

作者: HuyaRC | 来源:发表于2017-05-08 16:07 被阅读225次

    分享是每个优秀的程序员所必备的品质


    iOS 10.3

    iOS 10.3 新增了更换应用图标的功能。开发者提供多个图标的选择,用户可以自由切换这些图标。

    • api均为10.3以上
    • 当前app是否支持备用的icon,需要判断

    官方文档

    其实就是在Info.plist里面使用CFBundleIcons声明当前app的primary和alternate icon。
    上代码:

            <key>CFBundleAlternateIcons</key>
            <dict>
                <key>newIcon</key>
                <dict>
                    <key>CFBundleIconFiles</key>
                    <array>
                        <string>newIcon</string>
                    </array>
                    <key>UIPrerenderedIcon</key>
                    <false/>
                </dict>
            </dict>
            <key>CFBundlePrimaryIcon</key>
            <dict>
                <key>CFBundleIconFiles</key>
                <array>
                    <string>AppIcon60X60</string>
                </array>
            </dict>
        </dict>
    
    info.plist截图

    tips:苹果默认会在 App Store 里的应用图标上半部自动添加高亮特 效,虽是好心但有时候这半个光圈会破坏图标设计者的原作。如果您要去掉这一高亮特效,可以在程序的 info.plist 里添加一个值类型为 boolean 的字段:UIPrerenderedIcon,值设定为YES(或者是:Icon already includes gloss effects,值设定为YES)。再上传应用,App Store 就不会在图标上添加高亮特效了。

    切换图标代码:

    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) {
            [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    NSLog(@"set icon error: %@",error);
                }else{
                    NSLog(@"Set up successfully,Press the Home key to view");
                }
            }];
        }else{
            [[UIApplication sharedApplication] setAlternateIconName:@"newIcon" completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    NSLog(@"set icon error: %@",error);
                }else{
                    NSLog(@"Set up successfully,Press the Home key to view");
                }
            }];
        }
    
    changeIcons.gif

    Demo:RCChangeIcons

    个人浅见,有误的地方欢迎指正

    相关文章

      网友评论

        本文标题:iOS10.3:动态改变APP图标

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