iOS开发心得iOS开发常用iOS开发

iOS10.3新特性之动态更换APP图标

2017-03-31  本文已影响4590人  Dosun

iOS 10.3 加入了了更换应用图标的新功能,当应用安装后,开发者可以为应用提供多个应用图标选择。用户可以自由的在这些图标之间切换。这也是 iOS 主屏首次支持应用图标更换。如下介绍如何更新应用图标。

一、API介绍

UIApplication 的对象方法,set​Alternate​Icon​Name:​completion​Handler:​可以用来更换应用的图标,但是还要设置plist文件内容,后面细致讲解。

//alternateIconName  参数是应用图片名字,如果该参数是nil,默认是最初图标的名字
//completionHandler 是回调,如果更换图片成功,error 为nil,否则不为nil;
- (void)setAlternateIconName:(NSString *)alternateIconName 
           completionHandler:(void (^)(NSError *error))completionHandler;
讨论

在调用此方法时,要用supports​Alternate​Icons 方法,来判断是否支持换应用图标。另外还要在plist文件中用 CFBundle​Icons 键声明 primary 和 alternate 图标,如何设置 CFBundle​Icons 键,请参考Information Property List Key Reference

二、Plist文件的配置

下图是最初应用的图标。


Snip20170331_5.png

下图中是plist 文件的设置,最初图标的名字 和 更新图标和名字要一一对应。


Snip20170331_1.png
<key>CFBundleIcons</key>  
    <dict>  
        <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>Icon</string>  
            </array>  
        </dict>  
    </dict>  

三、代码实现

如下代码实现如何更换应用的图标,主要思路如下
1 系统能否支持更换图标
2 判断是否已经更新过图标
3 更新图标

- (IBAction)changeIcon:(id)sender {
    
    if ([UIApplication sharedApplication].supportsAlternateIcons) {
        NSLog(@"U can change icon image");
        
        //应用是否更新过图标
        NSString *iconName = [[UIApplication sharedApplication] alternateIconName];
        
        if (iconName) {
        //setAlertnateIconName方法有二个参数
       //第一个参数是 要换图标的名字,如果写nil,系统默认是最初图标名字
      //第二个参数是 方法执行的回调
            [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    NSLog(@"errpr = %@",error);
                }else{
                
                    NSLog(@"suceess");
                }
            }];
        }else{
            //换图标
            [[UIApplication sharedApplication] setAlternateIconName:@"newIcon" completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    NSLog(@"errpr = %@",error);
                }else{
                    
                    NSLog(@"suceess");
                }
            }];
        }  
    }
    

四、效果图如下

换图标效果图.gif
上一篇下一篇

猜你喜欢

热点阅读