一、应用场景
- 碰到各种节假日,促销活动等,需要更换App图标 logo。如天猫双十一,春节等。
- 根据App主题切换应用logo。
从iOS10.3开始,苹果开始支持动态更换应用logo了,新增的Api如下所示
// If false, alternate icons are not supported for the current process.( 如果为NO,表示当前进程不支持替换图标)
@property (readonly, nonatomic) BOOL supportsAlternateIcons NS_EXTENSION_UNAVAILABLE("Extensions may not have alternate icons") API_AVAILABLE(ios(10.3), tvos(10.2));
// 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.(传入nil代表使用主图标. 完成后的操作将会在任意的后台队列中异步执行; 如果需要更改UI,请确保在主队列中执行.)
- (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));
// If `nil`, the primary application icon is being used.(如果alternateIconName为nil,则代表当前使用的是主图标.)
@property (nullable, readonly, nonatomic) NSString *alternateIconName NS_EXTENSION_UNAVAILABLE("Extensions may not have alternate icons") API_AVAILABLE(ios(10.3), tvos(10.2));
二、首先配置info.plist信息
截屏2020-11-09 下午4.39.32.png三、添加icon图片,以及写加载代码
注意这里需要更换的图片不要放到Assets.xcassets,只要把主图标放里面就可以。
截屏2020-11-09 下午4.44.10.png更换icon的代码,记住不要放到Appdelegate里,可以放在主控制器的某个监听里即可。
调接口来切换图标logo,或者在通知里进行图标切换。
if (![[UIApplication sharedApplication] supportsAlternateIcons]) {
return;
}
if ([iconName isEqualToString:@""]) {
iconName = nil;
}
[[UIApplication sharedApplication] setAlternateIconName:iconName completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"更换app图标发生错误了 : %@",error);
}
}];
这样就可以动态的改变App图标了,目前更换应用logo,只支持率先把图标配置到应用里,再进行切换,暂时无法支持,动态获取图片替换。
网友评论