狮子会上的APN。什么可能?

时间:2012-01-30 13:14:52

标签: macos apple-push-notifications

我正计划推出Mac OS X(Lion)应用程序,并想询问有关APN的一些问题。

首先关闭:您是否可以将APN发送给Lion应用程序,该应用程序不是徽章或警报?也就是说,您是否可以将键/值对或某些此类数据发送到端点应用程序,它可以用来确定要采取的操作?很确定我可以在iOS版本中执行此操作,但不适用于Mac OS X

接收事件的应用程序是否能够这样做 - 即使它在后台?

最后,应用程序是否需要具有UI?即,我可以编写一个只能作为通知终点的背景应用吗?

我真正想要解决的是,我是否可以利用Lion上的APN作为警报我的应用程序执行某些操作的通用机制,或者它是否纯粹用于提供UI警报?

1 个答案:

答案 0 :(得分:0)

您只能注册徽章警报(NSRemoteNotificationTypeBadge),但您可以发送与iOS相同的有效负载类型,Mac应用程序将接收它。到目前为止,我只是设法让运行和后台应用程序接收通知,但docs say:

  

Mac OS X注意:因为支持的唯一通知类型   非运行的应用程序是图标标记

所以看起来非运行的应用程序应该能够收到通知,但我还没想出来。

这是我的应用在后台接收通知:

2012-02-13 18:00:39.531 TestPush[25580:707] Received Push Alert: TESTING
2012-02-13 18:00:39.532 TestPush[25580:707] Received Push Badge: 10
2012-02-13 18:00:44.153 TestPush[25580:707] applicationDidResignActive
2012-02-13 18:00:57.233 TestPush[25580:707] remote notification: {
    "_" = "n7dBZFYpEeGiNBT+tdMfCA";
    aps =     {
        alert = TESTING;
        badge = 10;
    };
}

这是自定义有效负载(您提到的键/值对):

2012-02-13 18:23:44.665 TestPush[25958:707] remote notification: {
    "_" = "zsUPTFYsEeGiNBT+tdMfCA";
    acme1 = bar;
    acme2 = 42;
    aps =     {
        alert = "You got your emails.";
        badge = 9;
        sound = "bingbong.aiff";
    };
}
2012-02-13 18:23:44.666 TestPush[25958:707] Received Push Alert: You got your emails.
2012-02-13 18:23:44.666 TestPush[25958:707] Received Push Sound: bingbong.aiff
2012-02-13 18:23:44.667 TestPush[25958:707] Received Push Badge: 9
2012-02-13 18:23:44.667 TestPush[25958:707] Received cust1: bar
2012-02-13 18:23:44.668 TestPush[25958:707] Received cust2: 42

不确定UI部分,我不认为你需要一个UI。

另请参阅Apple PushyMac中的示例代码。