美文网首页iOS大咖iOSiOS Developer
iOS开发之 替换AppIcon(iOS10.3)

iOS开发之 替换AppIcon(iOS10.3)

作者: Daniel_Guo | 来源:发表于2017-03-31 17:08 被阅读1351次

背景:

在iOS10.3之前如果想替换APP的图标,必须通过Assets.xcassets添加AppIcon,而且是唯一指定的,不能够修改。
iOS10.3之后,系统提供了修改AppIcon的API,可以通过内置几个不同的icon,然后通过代码设置不同的AppIcon。

核心API:


// Pass `nil` to use the primary application icon. The completion handler will be invoked asynchronously on an arbitrary background queue; be sure to dispatch back to the main queue before doing any further UI work.
//如果name设置为nil,会自动读取主app icon
- (void)setAlternateIconName:(nullable NSString *)alternateIconName completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler NS_EXTENSION_UNAVAILABLE("Extensions may not have alternate icons") API_AVAILABLE(ios(10.3), tvos(10.2));

官方文档:

1790503-ee6ee4b631758c62.png

info.plist具体配置:

E7A2F9BA-73EE-414A-9CC1-F67832B4882B.png 3F612363-EF6C-4F96-BA38-AA672E3D245D.png

Primary Icon 字段设置为AppIcon(就是asset里面的名字),如果设置appicon的API的name参数设置为nil,会自动读取Primary Icon对应的图片,

Test1是用来替换原生图标的图片资源,文件名需要和info.plist中保持一致,需要注意的是 图片资源需要放在外边,不能放在asset资源里面。

具体实现代码


- (IBAction)testClick:(id)sender {
    [[UIApplication sharedApplication] setAlternateIconName:@"Test1" completionHandler:^(NSError * _Nullable error) {
        NSLog(@"error = %@",error.localizedDescription);
    }];
}

- (IBAction)test2Click:(id)sender {
    [[UIApplication sharedApplication] setAlternateIconName:@"Test2" completionHandler:^(NSError * _Nullable error) {
        NSLog(@"error = %@",error.localizedDescription);
    }];
}

- (IBAction)emptyClick:(id)sender {
    [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
        NSLog(@"error = %@",error.localizedDescription);
    }];
}

实现效果:

修改前:


Simulator Screen Shot 2017年3月31日 下午5.06.35.png

点击按钮修改:

Simulator Screen Shot 2017年3月31日 下午5.06.48.png

修改后:

Simulator Screen Shot 2017年3月31日 下午5.07.03.png

相关文章

网友评论

  • 孤独感爆棚:10.3之前也能修改,参照支付宝
    zlcode:他用的是Android的手机
    孤独感爆棚:@壞尐孓飞 我就是感觉,没见过哪里有说明
    壞尐孓飞:10.3之前支付宝怎么实现的没见过,哪里有说明吗

本文标题:iOS开发之 替换AppIcon(iOS10.3)

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