iOS App更换图标Logo(本地更换)

1.各大购物平台在节假日都是更换App Icon图标

通常有两种方式:1.每换一个新的图标,需要重新上一次AppStore;

                                2.在项目里预留好未来需要更换的图标,用api触发(或者本地时间判断自动更换)

两种方法各有利弊,第一种 弊:每次都需要上AppStore,有点麻烦;利:但是可以保证AppStore上的图标也是最新的

                          第二种,弊:需要把未来的图标设计好,AppStore上的图标不会更新。 利:不用频繁上架,只需要埋好图标,随时更换。

第一种方法大家都会,现在来说说第二种。

苹果官方从iOS10.3开始支持动态更换应用logo,新增的Api如下所示

一:添加需要更换的Icon图标(图片)

注意:添加的图标不要放在Assets.xcassets文件里;放在文件目录,如下图(我取名为replaceIcon的图片)

二:配置info.plist信息

2.1添加 Icon files (iOS 5),类型为Dictionary

    注意:全名为Icon files (iOS 5),包括括号里的iOS5

2.2 在Icon files (iOS 5)下添加CFBundleAlternateIcons,类型为Dictionary

2.3 在CFBundleAlternateIcons下添加changeIcon1,类型为Dictionary

注意: changeIcon1 是存放图片的文件名,名字随便起。本文中,只有这里可以随便起名字,其他的都是苹果的固定类名

2.4.在changeIcon1下添加CFBundleIconFiles,类型为Array

2.5.在CFBundleIconFiles下添加一个item0,类型为String类型。这里输入更换图片的名称(步骤一中的replaceIcon)

这里还可以创建多个更换图片文件changeIcon2,changeIcon3

 三.使用

在需要更换图片的地方写以下代码: 代码里的changeIcon1,就是步骤二-->2.3中创建的图片文件名

    if ([UIApplication sharedApplication].supportsAlternateIcons) //来判断是否支持换应用图标    {

        [[UIApplication sharedApplication] setAlternateIconName:@"changeIcon1" completionHandler:^(NSError * _Nullable error) {

            if (error)

            {

                NSLog(@"更换app图标发生错误了 : %@",error);

            }else{

                NSLog(@"更换app图标成功");

            }

        }];

    }

 四.优化

完成上面三步,基本算完图标更换的流程,但是在调用更换图标的方法时(步骤三),系统会弹出一个弹窗,告知用户已经完成更换,如下图。 这样的体验非常不友好。

现在我们想办法去掉这个弹窗

PS:2023.12.22.貌似苹果优化了这个功能,现在更换icon成功后不会出现弹窗了,体验感得到了优化

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作者Flying-Einstein,源码LaunchScreenTest,常见的几种启动图风格 静态图类型 :微信 图片不变,有动画效果 :京东 随着节日或者时间动态更换的 :百度云、网易公开课 网易公开课 注意:笔者说的启动图并不是广告页,启动图是不接受点击事件的,但是广告页是接受点击事件的,点击后一般会跳转到网页。如下: 这几种风格的启动图怎么实现的? 静态图类型 :这种比较简单,开发者可以使用LaunchImage和LaunchScreen.storyboard的任何一种方式添加所需的正确格式的图片 图片不变,有动画效果 :这种方式,笔者认为在实现方式上和第三种是一样的,就不在赘述,感兴趣的读者在看完第三种实现方式后,可以尝试去做。 随着节日或者时间动态更换的 :这种方式,也就是笔者今天着重要讲的,原理及实现方式。 像百度云或者网易公开课一样动态更换APP启动图原理 其实你看到的不是一张图片 :读者仔细观察就会发现,使用这种方式的的启动图,用的不是一张图片,而是两张。我们拿百度云来举例: 可以看到,两张图片的区别就是,底部都是一样的,而第一张上半部分是空白。其实,网易公开课和支付宝德也是如此。第一张图片是内容兼容性很强的图片,就是一个版权说明加上一个类似于app logo的样式,上面空白部分可以根据节日的不同,调整展示的样式 这两张图片还有其他的不同吗 :因为笔者经常使用这几款app,发现有的时候第二张图片是不显示的,显示完第一张图片直接跳到app主页了。笔者认为,第一张图片就是放在[LaunchImage或者LaunchScreen.xib中的图片,是不会改变的。第二张图片则是从网上获取的,而且可以根据是否获取到相应的图片网址决定第二张图片能否显示。 为什么要这么做 :有的读者可能有疑问,为什么要这么做?难道不可以直接更换掉第一张启动图吗,或者不显示第一张只显示第二张?答案:NO! 更换第一张图片?抱歉,更换不了,如果你使用的是LaunchScreen.xib或者LaunchScreen.Storyboard,只要你的app启动过,那张图片就永远的缓存在app里了,以后每次启动都会出现。 网络请求有延时,如果不放第一张图片,只放第二张图片,会出现短暂的黑屏。 从产品的角度来讲,也不合理。比如:植树节的时候我展示了和环保有关的内容,如果过了植树节,那么正常情况下我不展示该内容就可以了,后台不返回相应的图片网址,展示完第一张图片就ok了。如果没有第一张图片,那么过了植树节,我就需要把网址更换,需要一个下载图片的过程,从用户体验来讲也不好,时间延迟也会浪费流量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值