OSX 通知中心图标

25

我第一次使用OSX的通知中心API,但似乎无法弄清如何使应用程序的图标显示在通知徽章中。

默认的“您的应用程序没有图标”图标仍然显示:

我已经完成以下步骤:

  • 我创建了包括512、256、128、32和16像素版本的icns文件
  • 将图标拖到目标摘要的“应用程序图标”部分
  • 确保勾选复制图标到项目的框
  • plist的“图标文件”部分引用了正确的图标名称(不包括.icns)

有任何想法吗?当我通过Xcode运行应用程序或导出存档时,图标都不会显示。

我还从Sparrow.app中提取了Sparrow.icns文件,并尝试使用该文件代替我制作的文件。但那也没用。


可能重复: http://stackoverflow.com/questions/11770961/how-to-make-builded-app-with-icon - Mil0R3
我尝试过了 - 没有成功。http://cl.ly/image/3d1P271a0I3h http://cl.ly/image/1P0F2Z0o3a09 - phatduckk
这是一个谜题,我使用Icon Composer从icon.png制作了icon.icns,并将其拖到Xcode中的目标位置,它会自动添加到plist中,所有东西都很好。 - Mil0R3
9个回答

22

通过在构建目标的“常规”部分增加版本编译号,我成功解决了此问题。


已确认可在OS X 10.10.2上运行。无疑是实现目标最干净的方式。 - Patrick
是的,它正在工作!在新图标显示后,您可以将其改回原始状态。 :) - someguy234
已确认可在10.11.4 Beta (15E27e)和xCode 7.2 (7C68)上运行。 - Cripto
真遗憾。老实说,我在10.12上并没有多少使用xCode。 - Daniel Paul Searles
在我的macOS 10.12.2上运行良好。 - John
适用于macOS 10.12。 - Sodbileg Gansukh

14

您可以通过删除通知中心数据库文件 (~/Library/Application Support/NotificationCenter/SOME_UUID.db) 并终止通知中心进程(例如从活动监视器中)来强制刷新所有图标。

不幸的是,这会导致删除您的通知历史记录,但对我来说并没有太大影响。


我尝试过这个,但即使如此,通知仍然显示苹果的默认图标。但是当我以另一个用户身份登录时,通知中的图标会正确显示。有没有办法清除所有缓存或类似的东西? - Vipin Johney
2
这对我有用,不过目录已经改变了,在10.10中是$(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/db。我删除了db文件并通过活动监视器杀掉了通知中心(Notification Center)。 - Kilian
1
这是一个有趣的一行代码,可以根据Kilian的有用评论删除DB并杀死NotificationCenter:rm -rf $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/db && kill -9 \ps -A | grep "[^(grep )]MacOS/NotificationCenter" | awk '{print $1}'`` - Logan

13

实际上,在苹果的开发者论坛上一直存在这样的争议(链接, 链接(仅限有权限人员))。据我所知,目前还没有真正的解决方案,但你可以尝试以下方法:

  • 更改应用程序的Bundle ID并再试一次。如果更改后,清除应用程序并再改回来,一些人报告说看到它们的图标出现了。
  • 使用另一个用户帐户登录。通知中心使用的缓存可能是基于用户的,因此作为不同的用户,您可能能够获得正确带图标的通知。

3
修改捆绑标识解决了问题,这是一个相当无聊的错误。我不知道从应用商店升级会发生什么事情。 - phatduckk
2
这些开发者论坛的链接解决了我的问题。记录一下,我将旧版本的应用程序移动到了/Application目录下。这就是通知中心获取图标的位置,而这个旧版本有一个损坏的图标(不好的.iconset)。删除这个版本并重新启动通知中心解决了我的问题! - StuFF mc

4

在OSX 10.10+中,文件夹位置已经被移动。

以下命令将带您前往其新位置:

$ cd `getconf DARWIN_USER_DIR`/com.apple.notificationcenter/db               

然后

$ open .

@mKane,你用的是哪个操作系统版本?可能最近有更新。 - Obj-Swift
我想当时发布时我的系统版本是10.11.4,现在我已经升级到了10.12 b6。 - mKane

1
最简单的方法是更改项目中的Bundle Identifier,这样可以让图标显示出来。这在OSX 10.10.5和XCode 7.2上有效。(一旦通知中心捕捉到更改,如果已经有与之相关联的预配文件,您可以将其改回原始的Bundle Identifier)

1
我尝试了上述所有建议,但在10.14上唯一有效的方法是删除DerivedData文件夹: rm -rf ~/Library/Developer/Xcode/DerivedData

1
如果仍有人遇到此问题且以上方法均无效,以下是我解决问题的方法:
  1. 从“系统偏好设置”中打开“通知”(最简单的方法是打开“Alfred”或“Spotlight”并键入“通知”)
  2. 找到您的应用程序并将其删除(按退格键/删除键)
注意:这可能会删除所有通知。

1
我通过将我的应用程序归档并添加到应用程序文件夹中来解决了这个问题。当应用程序位于应用程序文件夹中时,即使您从XCode运行应用程序,图标也始终可见...

0

我正在使用Xcode 11.5,我也遇到了同样的问题。在我的情况下,只需要清除构建输出,关闭并重新打开项目。然后进行全新的构建并再次运行即可。之后图标就会出现。

顺便说一句:我已经将每个尺寸的应用程序图标放置在assets.xcassets文件中,除了1024 x 1024像素。不知道这是否相关。希望能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接