【问题标题】:Not receiving CloudKit push notifications for Custom Record Zone on the Mac在 Mac 上未收到自定义记录区的 CloudKit 推送通知
【发布时间】:2015-05-07 22:37:21
【问题描述】:

我已设置自定义区域订阅以接收来自我的自定义记录区域的(静默)推送通知。在我的 iOS 设备上一切正常,但我无法在我的 Mac 上接收通知。

要注册通知,我在applicationDidFinishLaunching 中注册通知类型:

[[NSApplication sharedApplication] registerForRemoteNotificationTypes:NSRemoteNotificationTypeNone];

(尝试了其他类型,结果相同)

application:didRegisterForRemoteNotificationsWithDeviceToken:

然后使用有效令牌调用。一切似乎都很好,但是当自定义区域注册更改时,我没有收到任何通知并且

application:didReceiveRemoteNotification:

未被调用。我还尝试将警报正文设置为这样的空字符串:

CKNotificationInfo *info = [[CKNotificationInfo alloc] init];
info.alertBody = @"";
info.shouldSendContentAvailable = YES;

但它也没有工作。当我将字符串设置为警报正文(并注册适当的通知类型)时,我还会在右上角收到带有该正文的通知,但 application:didReceiveRemoteNotification: 未调用。

希望你能帮助我。谢谢!

【问题讨论】:

标签: ios macos cocoa icloud cloudkit


【解决方案1】:

只需从其中一个共享链接中提取正确的解决方案:如果您使用 CKNotificationInfo 作为警报,除非您将 CKNotificationInfo.soundName 设置为空字符串,否则不会在 Mac 上调用 didReceiveRemoteNotification!这看起来只是 OS X(目前是 10.10 和 10.11)中的一个错误,但可以通过这个简单的更改来解决。

【讨论】:

  • 我仍然无法在 Mac 上收到通知。我的通知信息代码:CKNotificationInfo *info = [[CKNotificationInfo alloc] init]; info.alertBody = @""; info.shouldSendContentAvailable = YES; info.soundName = @""; info.shouldBadge = NO; Any Ideas?
  • 您确定您处于正确的“开发”与“生产”环境中吗?如果您使用 TestFLight 的 iOS 应用程序进行测试,它将无法工作,因为 TestFlight 使用的是生产环境,而在 Mac 上您只能使用开发环境进行测试。
  • 是的,在 iOS 设备之间推送和推送到我的开发环境中工作正常。
  • 我试过这个 - 它似乎没有工作 - 但徽章增加了,所以它似乎正在接收通知但没有调用 didReceiveRemoteNotifications
  • 为什么投反对票?我真的留下了一个适用于 10.10 和 10.11 的答案,我最后一次测试它。苹果可能修复了这个错误(或引入了一个新错误)。我有一个正在生产中的工作应用程序以这种方式解决了它。仅当两者都设置为开发或都在生产中时,使用 iOS 进行测试才有效。 Mac 上的 Adhoc / Developer ID 应用程序在我上次检查时没有收到推送通知。
【解决方案2】:

我认为它已在 macOS Sierra 中得到修复。现在为我工作。

编辑: 哦,哇:刚刚注意到我(!)在 1.5 年前问过这个问题。 :)

【讨论】:

    猜你喜欢
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    相关资源
    最近更新 更多