You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

iOS推送通知图标更新后未变更问题求助

iOS推送通知图标更新不生效的解决方案
  • 强制刷新通知图标缓存(无需用户重启)
    可以通过触发一次本地通知来强制系统刷新通知图标缓存。在应用启动后添加如下Swift代码:

    import UserNotifications
    
    func refreshNotificationIcon() {
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
            if granted {
                let content = UNMutableNotificationContent()
                content.title = "图标已更新"
                content.body = "应用图标已完成更新"
                content.sound = UNNotificationSound.default
                
                let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
                let request = UNNotificationRequest(identifier: "RefreshIconNotification", content: content, trigger: trigger)
                
                center.add(request) { error in
                    if let error = error {
                        print("发送刷新通知失败: \(error.localizedDescription)")
                    }
                }
            }
        }
    }
    

    调用该方法后,系统会收到一条本地通知,触发通知图标缓存刷新,用户手动关闭通知即可。

  • 检查通知图标的Asset配置
    确保Assets.xcassets中的通知图标(Notification iOS)配置完全合规:

    • 必须包含所有要求尺寸(20x20, 29x29, 40x40, 58x58, 80x80, 108x108),且每个图标都是无圆角、透明背景(系统会自动添加圆角)
    • 确认图标文件为RGB颜色模式,避免使用索引色或CMYK模式
    • 若使用矢量图标,勾选Asset中的"Preserve Vector Data"选项,保证缩放不失真
  • 清理Xcode缓存与重新打包

    • Cmd + Shift + K清理项目,再用Cmd + Option + Shift + K清理构建文件夹
    • 删除设备/模拟器上的旧应用后重新安装
    • 重新生成归档文件,确保打包时调用的是最新图标资源,而非缓存的旧文件
  • 检查APNs推送Payload
    如果是远程推送,确认Payload中未指定自定义图标(如mutable-contentattachment字段),此类字段会让系统优先使用自定义图标而非应用默认通知图标,保持Payload使用默认配置即可。

  • 引导用户手动刷新(终极方案)
    若以上方法均无效,可引导用户通过以下步骤手动刷新缓存,无需重启设备:

    1. 进入「设置」→「通知」→ 找到目标应用
    2. 关闭「允许通知」,等待10秒后重新开启
    3. 或进入「设置」→「通用」→「iPhone存储空间」→ 找到应用,选择「卸载应用」后重新从App Store安装(卸载不会删除用户数据)

内容的提问来源于stack exchange,提问作者Alexandr

火山引擎 最新活动