推送通知不适用于通过 Parse.com 发送的 Android 和 iOS 设备

Posted

技术标签:

【中文标题】推送通知不适用于通过 Parse.com 发送的 Android 和 iOS 设备【英文标题】:Push notification is not working with Android and iOS devices sending via Parse.com 【发布时间】:2015-02-17 07:03:34 【问题描述】:

我正在使用 Parse.com 作为后端,我正在尝试在同一事件创建时向 androidios 设备发送推送通知。

当我从 Android 应用程序创建事件时,它只通知 Android 设备并且与 iOS 设备相同,但不会在两个平台设备中同时使用相同的事件收到通知。

重要提示:我的两种技术(Android 和 iOS)的捆绑标识符在安装表中不同。

这会影响我的推送通知机制吗?

还有其他解决方案可以向这两种类型的设备发送通知吗?

【问题讨论】:

当我面临同样的问题时,您是否设法在这方面取得任何进展 请试试这个答案。 我实际上设法让它工作 附注:Parse 托管服务将于 2017 年 1 月 28 日停用。如果您计划迁移应用程序,则需要尽快开始工作。 parse.com/migration 【参考方案1】:

是的,我找到了一个解决方案:

我创建了一列“Should_notify”并保持相同的真/假值,在编码方面我编写查询以发送推送通知。

注意:此代码块适用于 iOS,但同样适用于 Android。

NSDictionary *data = [NSDictionary dictionaryWithObjectsAndKeys:
                                       message, @"alert",
                                       @"Increment", @"badge",
                                       nil];
                 PFQuery *pushQuery = [PFInstallation query];

                 /**
                  * Where condition: if user or device enable Notification switch
                  */

                 [pushQuery whereKey:@"Should_Notify" equalTo:@YES];

                 /**
                  * Send push notification with data using pushQuery
                  */

                 [PFPush sendPushDataToQueryInBackground:pushQuery withData:data];

希望,这也会对您有所帮助。 :)

【讨论】:

【参考方案2】:

我最近遇到了这个问题并设法解决了它,因为只有一小行代码阻止它工作。

首先,您必须让 Android 和 iOS 通知正常工作。听起来像你。

您可以通过 Parse 在仪表板中显示推送来确保您做到这一点:

接下来您可以检查是否为所有设备设置了推送通知,单击其中一个推送并检查推送细分:

如您所见,我的推送适用于所有设备。如果你的没有这么说,那么这可能是你的问题。

最后要检查的是您的推送是否被发送到正确的频道。频道在推送字典中设置:

例如在我的 iOS 项目中,我将推送数据设置如下:

text = [NSString stringWithFormat:@"%@: %@", message.user.name, text];

// Send the push message to the users specified
PFPush * push = [[PFPush alloc] init];

[push setChannels:userChannels];

[push setData:@bAction: @"",
                bContent: text,
                bAlert: text,
                bMessageEntityID: message.entityID,
                bThreadEntityID: message.thread.entityID,
                bMessageDate: [NSString stringWithFormat:@"%f", [[NSDate date] timeIntervalSince1970]],
                bMessageSenderEntityID:message.user.entityID,
                bMessageType: message.type.stringValue,
                bMessagePayload: message.text,
                bBadge: @"Increment",
                bSound: @"default"];

这是让我感到困惑的一点,我将用户频道设置为 user_simplelogin_XX 而不是 Android 设置为 usersimplelogin)XX

所以这是最后一个重要的检查部分,推送是否发送给添加到频道的正确用户。

我会在推送详细信息中检查这一点,其中显示“包括...的频道”,如上图所示。

TL 博士:

    推送通知是否正常工作并向 Parse 发布正确的推送 设备之间是否启用推送通知(查看推送详细信息) 是否将正确的用户作为目标添加到推送渠道?

希望这会有所帮助,因为它非常令人沮丧,但现在效果很好

【讨论】:

以上是关于推送通知不适用于通过 Parse.com 发送的 Android 和 iOS 设备的主要内容,如果未能解决你的问题,请参考以下文章

Parse.com - 从 Parse.com 向 iOS 应用程序发送消息,不像推送通知

使用 Parse.com 安排 iOS 推送通知

Parse.com - 为单个用户设置推送通知

TTL 功能不适用于谷歌浏览器推送通知

向知道电话号码的特定设备发送推送通知,parse.com

如何使用 Parse.com Cloudcode 发送推送通知