我正在将推送通知添加到我的Mac应用中。通知显示得很好,但出于某种原因,我无法按照我认为应该的方式播放声音效果。
我正在传递自定义声音,在apns有效负载中使用“custom.caf”。这适用于我们的iOS应用程序。传入Mac应用程序时它不会播放任何内容。在非常有限的Apple文档中,PushyMac应用程序显示您必须根据推送的userInfo字典手动播放声音。如果我在应用程序运行时手动播放声音,我会发挥声音效果。
我的问题是应用关闭但没有运行。我仍然按预期获得推送通知,但没有声音播放。据我所知,我只是搞砸了。我有其他Mac应用程序仍然可以在它们不运行时播放声音。特别是我的电子邮件应用,Spark。所以我知道这是可能的,但我无法弄清楚它的秘诀是什么。请帮忙!!
答案 0 :(得分:1)
实现Apple推送通知的自定义声音功能非常简单;问题是文档没有提到执行此操作所需的内容。
所需的关键组件是扩展 - (例如,使用 Today Extension
)。在项目中创建新目标,包括扩展,自定义声音和标准APN功能都是必需的。 键 在应用程序未运行时让自定义声音正常工作只是具有扩展名(并且包含 NotificationCenter.framework
)出现在您的申请中。
添加新目标>今天扩展:
今天扩展>构建阶段>复制捆绑资源>自定义声音:
主要应用程序中唯一需要的特定APN功能如下:
func applicationDidFinishLaunching(_ aNotification: Notification) {
NSApplication.shared().
registerForRemoteNotifications(matching:
[.alert, .sound, .badge])
NSApp.dockTile.badgeLabel = nil
}
func application(_ application: NSApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
}
func application(_ application: NSApplication, didReceiveRemoteNotification
userInfo: [String : Any]) {
}
func application(_ application: NSApplication,
didFailToRegisterForRemoteNotificationsWithError error: Error) {
print("could not register for notfications: \(error)")
}
如果你同时播放两个声音,那么你可能已经拥有了调用AudioServicesPlaySystemSound
的代码并且可以被删除,因为NotificationCenter.framework
似乎处理了所有这些而没有添加额外的任何内容。