【问题标题】:Cocoa app, how to show the badge label when app isn't running?可可应用程序,当应用程序未运行时如何显示徽章标签?
【发布时间】:2017-09-20 09:46:07
【问题描述】:

我注意到 Spark 邮件应用即使在应用未运行时也能显示徽章计数。该应用程序是 Mac 应用商店应用程序,因此不得使用任何私有 API。有没有办法做到这一点?目前我只能在应用程序运行时执行以下操作:

[[[NSApplication sharedApplication] dockTile] setBadgeLabel:[NSString stringWithFormat: @"%ld", 10]];

【问题讨论】:

    标签: objective-c macos cocoa notifications


    【解决方案1】:

    您需要制作一个 Dock 磁贴插件。有关如何执行此操作的信息,请参阅NSDockTilePlugIn 的文档:

    https://developer.apple.com/documentation/appkit/nsdocktileplugin

    编辑:好的,如果你想做 Spark 正在做的事情,这里是:

    Spark 正在使用 Apple Push Notifications 来通知您收到的新电子邮件。对于 Gmail 或 Outlook 以外的电子邮件帐户,这通常意味着他们将您的用户名和密码存储在其服务器上,这似乎是“OMG! "对我来说令人毛骨悚然的程度,但 YMMV。当他们的服务器注意到您有一封新电子邮件时,他们会将通知转发给您。

    可以在此处找到有关 Spark 所做工作的说明:https://blog.readdle.com/how-we-handle-your-account-information-in-spark-1b42f4acef73

    如果您想自己实现推送通知,this video 将展示如何实现,this sample code 也可能会有所帮助。

    【讨论】:

    • App Store 上不允许使用 DockTile 插件
    • 我最近有一个应用被 App Store 审核团队拒绝使用它。我意识到文档对此很安静。
    • 好的,从 Spark 来看,据我所知,它似乎正在使用推送通知在收到新电子邮件时收到通知,使用 -[NSApplication registerForRemoteNotificationTypes:]。看起来如果您将NSRemoteNotificationTypeBadge 传递给它,您可以让它在收到通知时更新应用程序徽章。
    • 用 Spark 和推送通知的信息编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    相关资源
    最近更新 更多