PhoneGap PushPlugin - 访问iOS APNS Payload?

时间:2014-02-20 19:28:19

标签: ios cordova push-notification apple-push-notifications phonegap-plugins

将PushPlugin与我的PhoneGap 3 iOS应用程序一起使用,我的推送通知大部分都在工作,但我正在通过自定义有效负载向APNS发送通知。这就是它的样子:

$body = array(
    'customID' => $customID
);
$body['aps'] = array(
    'alert' => $message,
    'sound' => 'default'
);

据我所知,这应该得到APNS(scroll down to the bottom)的支持,但PushPlugin's documentation根本不能很好地解决iOS问题。我想要的是通过点击通知打开我的应用程序时能够访问customID作为JS变量。当应用程序只是单独启动时,我不希望发生任何特殊情况。此外,重要的是用户点击的通知 - customID是唯一且重要的。我真的很困惑,因为我找不到任何人谈论使用PushPlugin处理这些自定义APNS有效负载。

2 个答案:

答案 0 :(得分:2)

将自定义变量添加到推送通知有效负载的正确方法不是将其添加到aps命名空间(这是Apple保留的),而是单独使用,如:

$body['aps'] = array(
    'alert' => $message,
    'sound' => 'default'
);

$body['payload'] = array(
    'customID' => $customID
);

在PhoneGap中,您可以在通知回调中读取它(例如onNotificationAPN),如下所示:

function onNotificationAPN (e) {
    if (e.customID)
    {
        navigator.notification.alert("CustomID: " + e.customID);
    }

答案 1 :(得分:1)

我从未使用过PushPlugin,但是看看他们的代码,我可以指出你正确的方向。

AppDelegate中,他们将包含通知有效负载的字典传递给PushPlugin对象的实例,并调用该实例的notificationReceived方法。

notificationReceived的{​​{1}}构造了该字典中的JSON字符串,并将其传递给处理通知的JS回调方法。

以下是PushPlugin文档中回调方法的示例:

PushPlugin

我的JavaScript不是很流利,但是function onNotificationAPN (event) { if ( event.alert ) { navigator.notification.alert(event.alert); } if ( event.sound ) { var snd = new Media(event.sound); snd.play(); } if ( event.badge ) { pushNotification.setApplicationIconBadgeNumber(successHandler, errorHandler, event.badge); } } 应该包含JSON字符串,其中包含通知有效负载的所有数据,包括您的自定义属性。你应该可以在那里访问它。