OSX Notification Center Icon

2019-01-11 10:21发布

问题:

I'm using OSX's Notification Center APIs for the first time and can't seem to figure out how to make my app's icon to show up in the Notification badge.

The default "your app doesn't have an icon" icon keeps showing up:

Here's what I've done so far

  • I have created an icns file that includes 512, 256, 128, 32 & 16px versions
  • dragged the icon into the "App Icon" section of the target's summary
  • I made to sure to check the box to copy the icon into the project
  • the plist's "Icon file" section references the correct icon name (minus the .icns) part

Any ideas? The icon doesn't show up when I run the app thru Xcode or when I export an archive either.

I also have extracted the Sparrow.icns file from Sparrow.app and tried using that one instead of the one I made. That didn't work either.

回答1:

You can force the Notification Center to refresh all of the icons by deleting the Notification Center database file (~/Library/Application Support/NotificationCenter/SOME_UUID.db) and then killing the Notification Center process (e.g., from Activity Monitor).

Unfortunately this has the side effect of deleting your notification history, but this wasn't too much of an issue for me.



回答2:

I was able to fix this issue by incrementing the Build number in the General section for the build Target.



回答3:

There's actually an ongoing debate on Apple's developer forums (link, link for people with access) about this. As far as I know, there's currently no real solution, but you can try the following:

  • Change your app's bundle ID and try it again. If you change it, clean your app, and change back, some people have reported success with seeing their icon show up.
  • Log in as another user. The caching Notification Center uses may be per-user, so you might be able to get the properly-iconned notifications as a different person.


回答4:

The folder location has been moved for OSX 10.10+.

Following command takes to you to its new location:

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

and then

$ open .


回答5:

Easiest way that I managed to get the icon to show up is change the Bundle Identifier in your project. This works on OSX 10.10.5 and XCode 7.2

(Once notification center picks up the change, you can change it back to your original bundle identifier if you already have a provisioning profile associated with it)



回答6:

I have solved the issue by archiving my app and adding a copy to my applications folder. When the app is in Application folder, the icon is always visible even you run the app from XCode...



回答7:

I tried all of the above suggestions but the only thing that worked for me on 10.14 was to delete DerivedData:

rm -rf ~/Library/Developer/Xcode/DerivedData