iOS动态更换icon1

iOS app更换icon有两种方式

1、替换AppIcon然后重新打包上架

2、方法:setAlternateIconName 方法,提前在项目里面加入后面可能要换成的图片,在代码里面合适的时候调用该方法替换icon

(1)首先准备好图片资源

(2)配置info.plist


图1

在图1里面配置了一张名称为hangupnormal的图片,只配置一张

你也可以配置多尺寸的


图2

(3)在合适的地方执行方法
示例:[[UIApplication sharedApplication] setAlternateIconName:@"hangupnormal" completionHandler:^(NSError * _Nullable error) {

//       

//    }];

注意事项:

1、setAlternateIconName不能在didFinishLaunchingWithOptions中调用,会报3072错误,需要在ViewController中调用,初步猜想可能是需要window初始化成功后调用,需要一个ViewController或者是UINavigationController之类的,没有去验证


2、supportsAlternateIcons只是检测是否能进行更换,并不能进行系统版本号判断,需要自己进行版本判断,要不然在低版本系统中会崩溃,比如:iOS7


3、icon资源文件需要在项目目录下,不能是Assets.xcassets中的图片,建议放在项目下的icons目录下,其他目录好像也有问题


4、然后就是当你调这个方法更改icon成功时会一个系统提示框,交互很不友好,经过研究,发现他这个弹框是uialertcontroller 里面套了个自定义的视图,这个alert controller没有title和message,所以有的同学想出了一个方法,就是运行时替换presentviewcontroller方法。匹配到没有title的alert controller就取消执行

修改成功弹框

参考链接:https://www.jianshu.com/p/9c78f161eeb8和 https://www.jianshu.com/p/69313970d0e7

你可能感兴趣的:(iOS动态更换icon1)