gpt4 book ai didi

ios - Phonegap 推送通知不会出现在状态栏中,也不会出现在使用 PushPlugin 插件的 iOS 锁定屏幕中

转载 作者:行者123 更新时间:2023-12-04 19:49:22 27 4
gpt4 key购买 nike

简介

我正在使用 Phonegap 4.2(基于Cordova 5.0)创建跨平台应用。

对于 iOS,我使用的是 Xcode 6.0 并且我使用的是 PushPlugin用于处理推送通知的 Cordova 插件。

我的问题

我能够在 iOS 版本的应用程序中接收推送通知,但是当应用程序在后台运行时,我不会收到任何推送通知并且它们不会出现在状态栏中,也不会出现在锁定屏幕中。 背景是指应用程序关闭时。

详情

引用

我在 config.xml 中正确包含了 PushPlugin 插件:

<feature name="PushPlugin">
<param name="android-package" value="com.plugin.gcm.PushPlugin" />
<param name="ios-package" value="PushPlugin" />
</feature>

我在 index.html 文件中正确引用了 PushPlugin JavaScript 对象:

<script type="text/javascript" src="./js/PushNotification.js"></script>

附加推送通知事件

我已将通知事件正确附加到 onNotificationAPN 方法:

pushNotification = window.plugins.pushNotification;
if (device.platform == 'android' || device.platform == 'Android' || device.platform == 'amazon-fireos')
{
// ...
}
else
{
pushNotification.register(tokenHandler, errorHandler,
{
"badge":"true",
"sound":"true",
"alert":"true",
"ecb":"onNotificationAPN"
});
}

tokenHandlererrorHandler 已定义,onNotificationAPN 也已定义;

function onNotificationAPN(e)
{
// handle APNS notifications for iOS
if (e.alert)
{
// showing an alert also requires the org.apache.cordova.dialogs plugin
// Note that I have org.apache.cordova.dialogs aswell
navigator.notification.alert(e.alert);
// This code snippet runs fine when the app is open: the app receives the push notification and it's alerted to the user.
}
if (e.sound)
{
// playing a sound also requires the org.apache.cordova.media plugin
// Note that I have org.apache.cordova.media plugin aswell
var snd = new Media(e.sound);
snd.play();
}
if (e.badge)
{
pushNotification.setApplicationIconBadgeNumber(successHandler, e.badge);
// This code snippet works fine when the app is open: the app receives a push notification and when I close the app the badge count is set to 1, whether that's an expected behavior or not I'm not sure but not what matters right now.
}
}

如前所述,当应用程序打开时,该应用程序确实会接收并提醒推送给它的通知。但是,当应用程序未打开时,设备似乎没有注意到推送。我希望推送通知出现在锁定屏幕和/或状态栏中。

测试装置

我在操作系统版本为 7.0.3 的 iPad 上进行测试。

配置文件

我正在使用开发配置文件,我用于测试的设备已添加到苹果开发中心的应用程序设备中。

推送通知的负载

推送通知中发送的负载如下所示:

Msg: {
"sound":"beeb.wav",
"alert":"Here is a testing push notification",
"badge":"1",
"location":"", // Custom variable
foreground:"1"
}

我已经尝试将前景变量更改为 0 并将前景替换为背景,但它并没有真正改变任何东西。

通知中心

我已经为应用程序配置了通知中心,因为它应该是这样的:

  • 角标(Badge)应用程序图标已打开。
  • 声音已打开。
  • 在通知中心显示已开启。
  • 包含设置为 5 个最近的项目。
  • 在锁定屏幕上显示已开启。

有帮助吗?

我四处看了很多,但我有点空白,如果 Stack-overflow 可以提供帮助,我将不胜感激。我通常坚持回答问题,但现在轮到我提问了:)

最佳答案

推送通知负载需要一个 aps key ,以及一个包含将要显示的消息的警报:

For each notification, compose a JSON dictionary object (as defined byRFC 4627). This dictionary must contain another dictionary identifiedby the key aps. The aps dictionary can contain one or more propertiesthat specify the following user notification types

  • An alert message to display to the user
  • A number to badge the app icon with
  • A sound to play

More info

负载示例:

  {

"aps" : {

"alert" : "You got your emails.",

"badge" : 9,

"sound" : "bingbong.aiff"

},

"acme1" : "bar",

"acme2" : 42

}

当应用程序在前台时,您会收到整个有效载荷,即使它没有那种格式,您也可以处理它,但是当应用程序在后台或关闭时,系统需要 aps 键和带有将显示在通知中心的消息。

关于ios - Phonegap 推送通知不会出现在状态栏中,也不会出现在使用 PushPlugin 插件的 iOS 锁定屏幕中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31361771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com