美文网首页
iOS动态更换App图标

iOS动态更换App图标

作者: 11e17ad00a2a | 来源:发表于2018-01-05 11:06 被阅读249次

应用场景

  1. 各类皮肤主题切换,附带App图标一块更换。

  2. 图标促销提示,如某宝双11购物节,提前更换App图标。

起跳版本

  1. iOS10.3 开始支持

实现方案

  1. 核心API:

    |

    @interface

    UIApplication (UIAlternateApplicationIcons)

    // 如果为NO,表示当前进程不支持替换图标

    @property

    (readonly, nonatomic) BOOL supportsAlternateIcons NS_EXTENSION_UNAVAILABLE(``"Extensions may not have alternate icons"``) API_AVAILABLE(ios(``10.3``), tvos(``10.2``));

    // 传入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``));

    // 如果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``));

    @end

    |

  2. 图标的配置方法:

    Info.plist是个字典,假设为NSDictionary *infoPlist。

    CFBundleIcons是Info.plist字典里的一个键@"CFBundleIcons"。

    CFBundleIcons对应的value是个字典。

    CFBundleIcons里面能够包含的键有:CFBundlePrimaryIcon、CFBundleAlternateIcons、UINewsstandIcon。

    官方说明图:
    [图片上传中...(image-5277da-1513778061805-1)]

    项目具体配置图:

    [图片上传中...(image-fe6f7e-1513778061805-0)]

  3. 其他注意事项

    • 文件扩展名,如@2x,@3x,要么统一不写,那么系统会自动寻找合适的尺寸。要写就需要把每张icon的扩展名写上。
    • <pre style="margin: 0px; padding: 0px; font-family: ConfluenceInstalledFont, monospace;">iPad版本如果需要有更换的图标,需要在CFBundleIcons〜ipad同样设置一次。</pre>
  4. <pre style="margin: 0px; padding: 0px; font-family: ConfluenceInstalledFont, monospace;">特别注意:动态更换的icon不支持云端图片,需要预放在ipa包里面,且不能使用assets打包;因此****会增加ipa的体积。</pre>

  5. 部分代码

    |

    - (``void``)changeAppIcon {

    if

    ([UIApplication sharedApplication].supportsAlternateIcons) {

    //TODO

    }``else``{

    //TODO

    return``;

    }

    NSString *iconName = [[UIApplication sharedApplication] alternateIconName];

    if

    (iconName) {

    // change to primary icon

    [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {

    if

    (error) {

    //TODO

    } else

    {

    //TODO

    }

    }];

    }``else``{

    // change to alterante icon

    [[UIApplication sharedApplication] setAlternateIconName:@``"renrenche"

    completionHandler:^(NSError * _Nullable error) {

    if

    (error) {

    //TODO

    } else

    {

    //TODO

    }

    }];

    }

    }

    |

官方文档

  1. https://developer.apple.com/documentation/uikit/uiapplication/2806818-setalternateiconname?language=objc
  2. https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-SW14

相关文章

  • Flutter 更换App图标

    以Flutter2.0+版本为示例 iOS App图标更换 Android App图标更换

  • 【iOS】动态更换 App 图标

    动态更换图标 在iOS 10.3苹果添加了更换图标的功能,通过这个功能,我们可以在适当的时候采取特定的方式为我们的...

  • iOS 动态更换App图标

    该功能应用的场景 1、白天/夜间模式切换,在切换App主色调同时切换App图标。 2、各类皮肤主题(淘宝就可换肤)...

  • iOS动态更换App图标

    应用场景 起跳版本 实现方案 官方文档 应用场景 各类皮肤主题切换,附带App图标一块更换。 图标促销提示,如某宝...

  • iOS 动态更换 APP图标

    背景 项目开发过程中,可能会有更换项目图标的需求,比如一些电商的应用,在双11,618,新年等节日的时候需要显示特...

  • iOS 动态更换App图标

    一、准备好icon图标 然后放到项目中 如图所示 注意:1、图片一定不要放到 Assets.xcassets 里面...

  • iOS 动态更换app图标(AppIcon)

    动态更换app的图标,就是在不重新安装app的情况下,可以动态更黄当前的icon图标。该方法只能在系统版本iOS1...

  • iOS 10.3新特性之动态更换图标

    iOS 10.3增加了动态更换图标的功能。这样我们就可以在不经过App Store更新图标。 实现 满足手机系统在...

  • [iOS开发] iOS动态更换图标系列(一)

    在iOS 10.3之前,苹果是不提供已上线的app动态更换图标功能的,这就导致我们即便只是一个更改节日图标的小需求...

  • iOS 无弹框更换 app 图标

    上篇文章我们详细查看了更换App图标的使用方法,并做了个小Demo。尽管当前我们可以实现动态更换App图标了,但是...

网友评论

      本文标题:iOS动态更换App图标

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