收到消息时向 iOS 推送通知不起作用
Posted
技术标签:
【中文标题】收到消息时向 iOS 推送通知不起作用【英文标题】:Push notification to iOS not working when message received 【发布时间】:2015-01-09 21:01:21 【问题描述】:我有一个用于推送通知的 Worklight 应用程序。发送推送会导致通知按预期显示在 android 和 ios 的通知栏中。如果在应用程序运行时收到推送,它会按预期调用消息处理函数。
我遇到的问题是,如果您通过点击 iOS 上的通知启动应用程序,如果在应用程序运行时发送另一个推送,则消息处理程序永远不会被调用。我必须退出应用程序并完全杀死它,然后从启动器重新启动应用程序。然后如果在应用程序运行时收到推送,它将调用消息处理程序。
这只发生在 iOS 上。应用程序将在应用程序运行时响应 Android 上收到的消息,即使应用程序已通过点击通知启动。
编辑:
我确实很难用语言表达这个场景,找不到有意义的正确词,但你所做的 Idan 步骤对于我正在尝试做的事情在很大程度上是正确的。我们正在做基于标签的通知,所以这与您所做的不同。我们还使用 PersistentCookieAuthentication,因为他们希望无需用户显式登录即可发送推送通知。
-
我们目前使用的是 WL build 6.2.0.01-20141216-0427
我们已经在几种不同的机型上进行了测试,一台运行 8.0.2 的 iPhone 4s 和一台运行 8.1.2 的 iPhone 5。
【问题讨论】:
你能用更好的措辞编辑中间段落吗?那里的东西听起来不合逻辑。当应用程序关闭时,您在该段中开始解释,但突然间您说应用程序打开时它不起作用。澄清。 这是在哪些设备上测试的? 数字狼,基于标签的通知根本不需要登录,只有基于事件源的通知需要登录。广播和标签通知都只需要为设备(不是特定用户)订阅标签,然后通知将发送到该设备。广播/标签中没有“多用户订阅”,因为您使用事件源。您需要提供与发送和接收通知相关的实际代码,以便进一步调试。 也许你可以创建一个示例应用程序(不是你客户的应用程序)来演示这个问题,它会更容易调试;请提及我的昵称@IdanAdar,以便您在此处回复时收到通知。 @DigitalWolf,请参阅我的更新答案。 【参考方案1】:根据已编辑的问题进行编辑:
基于标签的通知不需要任何登录,因为它是订阅您在 application-descriptor.xml 中定义的任何标签的设备;它不是基于登录的,因此您所做的任何类型的登录都无关紧要。推送将发送到使用 subscribeTag API 订阅了您的标签的任何设备(应用程序...)。
我在 iOS 中使用基于广播的通知(它基本上类似于基于标签的通知)进行了另一项测试。我将应用程序保留在后台并发送了通知。点击通知栏中的传入通知将应用程序带到前台,然后显示传入通知的警报。
你可以试试这个应用程序:https://www.dropbox.com/s/l2yk2pbvykrzfoh/broadcastNotificationsTest.zip?dl=0 确保放置您自己的 .p12 证书和 pushSender 密码。
我一直在尝试了解您的情况...我怀疑您遗漏了某些内容或需要更好地描述问题。
这是我使用 MobileFirst Platform 6.3(iOS 6.2 和 6.3 之间没有剧烈的推送变化)和运行 iOS 8.1.2 的 iPhone 6 所尝试的。
-
在设备上推出了示例推送通知应用程序(使用基于事件源的通知)
已登录 > 已订阅
退出应用程序
然后我通过调用 Studio 中的适配器发送通知
-
通知到达并显示在通知栏中
点击通知启动应用程序
已登录
然后显示通知警报。 然后我将应用程序移至后台。
-
发送了另一条通知,到达时通知栏显示
点击第二个通知会将应用程序带到后台,显示警报
然后我将应用程序保留在后台。
-
发送第三条通知
在这种情况下,因为应用程序在前台,通知没有显示在通知栏中 - 正如预期的那样 - 而是立即显示警报。
如果您的场景与上述不同,例如:您甚至没有使用基于事件源的通知,而是使用基于广播或标签的通知,或者您的应用程序流程不同等,请使用更准确的描述。
在编辑问题时,还要提及以下内容:
Worklight 版本和内部版本号 设备型号 使用 iOS 版本我知道目前正在调查一个可能的问题 (APAR #PI31988),即底层本机代码在 javascript 框架准备好处理消息之前调度消息,因此没有显示消息。发现这种情况发生在 iPhone 4 等速度较慢的设备中。
【讨论】:
以上是关于收到消息时向 iOS 推送通知不起作用的主要内容,如果未能解决你的问题,请参考以下文章
iOS Firebase 推送通知 - 收到令牌但推送不起作用