将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有效负载。
答案 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字符串,其中包含通知有效负载的所有数据,包括您的自定义属性。你应该可以在那里访问它。