更改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图片名字)
效果图如下:
最后就是写代码了:点击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