Code=3072 "The operation was cancelled" 设置备用应用程序图标时
Code=3072 "The operation was cancelled" when setting alternate app icon
我正在尝试在我的 iOS 应用程序中设置一个名为 MyIcon
的 alternate app icon。我的项目包中有一个 MyIcon.png
图像(不在我的资产文件夹中),它在我的 Info.plist 中声明如下:
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>MyIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>MyIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
在我的代码中,我尝试更改应用程序图标:
UIApplication.shared.setAlternateIconName("MyIcon")
但是,图标没有改变,而是在控制台中给出了这个错误:
Error Domain=NSCocoaErrorDomain Code=3072 "The operation was cancelled."
我该如何解决这个问题?
我收到这个错误有两个原因,
- 首先(当然不是因为),我没有通过将 png 文件添加到项目来执行 “将文件添加到 'ProjectNameFoo'”。否则它不起作用。之后它开始看到图标。
- 其次(也是极有可能的原因),我收到此错误是因为我试图更改
viewDidLoad
中的图标。当我像下面的代码那样尝试延迟时,它在我给出的任何时间都在工作。
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
UIApplication.shared.setAlternateIconName("MyIcon")
}
}
我被这个错误困扰了很长一段时间,尝试了各种方法,但无法弄清楚我做错了什么。我正在更改 AppDelegate.application(didFinishLaunchingWithOptions:)
中的图标。按照上面的建议用计时器延迟通话确实解决了这个问题。
值得注意的是,这个问题是由于 UIKit 试图显示 UIAlertController
和消息
You have changed the icon for $(PRODUCT_NAME)
那时候似乎不起作用。您需要等到加载根视图控制器。
这是因为这个API并不是让开发者随意更新图标,而是让用户自己选择一个交付能力。
我正在尝试在我的 iOS 应用程序中设置一个名为 MyIcon
的 alternate app icon。我的项目包中有一个 MyIcon.png
图像(不在我的资产文件夹中),它在我的 Info.plist 中声明如下:
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>MyIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>MyIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
在我的代码中,我尝试更改应用程序图标:
UIApplication.shared.setAlternateIconName("MyIcon")
但是,图标没有改变,而是在控制台中给出了这个错误:
Error Domain=NSCocoaErrorDomain Code=3072 "The operation was cancelled."
我该如何解决这个问题?
我收到这个错误有两个原因,
- 首先(当然不是因为),我没有通过将 png 文件添加到项目来执行 “将文件添加到 'ProjectNameFoo'”。否则它不起作用。之后它开始看到图标。
- 其次(也是极有可能的原因),我收到此错误是因为我试图更改
viewDidLoad
中的图标。当我像下面的代码那样尝试延迟时,它在我给出的任何时间都在工作。
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
UIApplication.shared.setAlternateIconName("MyIcon")
}
}
我被这个错误困扰了很长一段时间,尝试了各种方法,但无法弄清楚我做错了什么。我正在更改 AppDelegate.application(didFinishLaunchingWithOptions:)
中的图标。按照上面的建议用计时器延迟通话确实解决了这个问题。
值得注意的是,这个问题是由于 UIKit 试图显示 UIAlertController
和消息
You have changed the icon for $(PRODUCT_NAME)
那时候似乎不起作用。您需要等到加载根视图控制器。
这是因为这个API并不是让开发者随意更新图标,而是让用户自己选择一个交付能力。