iOS 动态更改APP(logo) icon

更改APP icon这个功能对于苹果开发人员来说只能每一次版本迭代才可以实现,但是我们有时候会发现,有好多APP在我们没有更新的情况下,就会自动改变APP的icon。

那这个功能是怎么实现的:

这个功能实现起来很简单,但是对系统版本有要求,这个功能只能在iOS 10及10以上才可以实现。其他情况下本人也用过,但是会出现闪退情况。

首先我们要在Plist文件中配置:

1、key : Icon files (iOS 5)  ---> value:Dictionary
2、接下来,打开  Icon files (iOS 5) ,它的下面包括两个配置变量,Primary Icon和Newsstand Icon,其Value对应的都是Dictionary

3、打开Primary Icon,里面放一张第一次登录的默认icon图片,比例为1:1

4、我们在Icon files (iOS 5) 下面在加入配置一个变量,key:CFBundleAlternateIcons    value:Dictionary

5、在CFBundleAlternateIcons我们在添加两个变量,分别是key:icon1、key:icon2,名字随便,value:Dictionary

6,在icon1和icon2下面加入分别加入一个key:CFBundleIconFiles    value:Array

7,在icon1和icon2下面分别加入CFBundleIconFiles下面添加一个元素:key:item0   value:Icon-180(想要改变的icon图片名字)

效果图如下:

iOS 动态更改APP(logo) icon

最后就是写代码了:点击one  App的icon会变成icon1里面对应的icon,点击two  App的icon会变成icon2里面对应的icon

- (IBAction)one:(id)sender {

    [selfchangeImageNames:@"icon1"];

}

- (IBAction)two:(id)sender {

    [selfchangeImageNames:@"icon2"];

}

-(void)changeImageNames:(NSString *)name{

    if ([UIApplicationsharedApplication].supportsAlternateIcons) {//来判断是否支持换应用图标

        //setAlertnateIconName方法有二个参数

        //第一个参数是要换图标的名字(此名字不是图片的原始名字),如果写nil,系统默认是最初图标名字

        //第二个参数是方法执行的回调

        [[UIApplicationsharedApplication]setAlternateIconName:namecompletionHandler:^(NSError *_Nullable error) {

            if (error) {

                NSLog(@"失败");

            }else{

                NSLog(@"成功");

            }

        }];

    }

}


demo下载链接:

CSDN:http://download.csdn.net/download/wangqinglei0307/10164549

GITHUB:https://github.com/WangQingLei307909/app-icon-wql