推送通知不适用于通过 Parse.com 发送的 Android 和 iOS 设备
Push notification is not working with Android and iOS devices sending via Parse.com
我正在使用 Parse.com 作为后端,我正在尝试在创建同一事件时向 android 和 iOS 设备发送推送通知。
当我从 Android 应用程序创建事件时,它仅通知 Android 设备,与 iOS 设备相同,但不会在同时使用同一事件的两个平台设备上收到通知。
重要说明: 我的两种技术(Android 和 iOS)的包标识符在安装中是不同的 table。
这会影响我的推送通知机制吗?
是否有任何替代解决方案可以向这两种类型的设备发送通知?
是的,我找到了一个解决方案:
我创建了一列 "Should_notify" 并维护相同的 true/false 值,在编码方面我编写了查询以发送推送通知。
注意:此代码块适用于 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];
希望,这对您也有帮助。 :)
我最近遇到了这个问题并设法解决了它,因为只有一小行代码阻止它工作。
首先,您必须让 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
所以这是最后一个重要的检查部分,是否将推送发送给添加到频道的正确用户。
我会在推送详情中检查它,如上图所示 "channels including..."。
TL 博士:
- 推送通知是否有效并向 Parse 发布正确的推送
- 是否在设备之间启用推送通知(查看推送详情)
- 是否将正确的用户添加为推送渠道的目标?
希望这会有所帮助,因为它非常令人沮丧,但现在效果很好
我正在使用 Parse.com 作为后端,我正在尝试在创建同一事件时向 android 和 iOS 设备发送推送通知。
当我从 Android 应用程序创建事件时,它仅通知 Android 设备,与 iOS 设备相同,但不会在同时使用同一事件的两个平台设备上收到通知。
重要说明: 我的两种技术(Android 和 iOS)的包标识符在安装中是不同的 table。
这会影响我的推送通知机制吗?
是否有任何替代解决方案可以向这两种类型的设备发送通知?
是的,我找到了一个解决方案:
我创建了一列 "Should_notify" 并维护相同的 true/false 值,在编码方面我编写了查询以发送推送通知。
注意:此代码块适用于 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];
希望,这对您也有帮助。 :)
我最近遇到了这个问题并设法解决了它,因为只有一小行代码阻止它工作。
首先,您必须让 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
所以这是最后一个重要的检查部分,是否将推送发送给添加到频道的正确用户。
我会在推送详情中检查它,如上图所示 "channels including..."。
TL 博士:
- 推送通知是否有效并向 Parse 发布正确的推送
- 是否在设备之间启用推送通知(查看推送详情)
- 是否将正确的用户添加为推送渠道的目标?
希望这会有所帮助,因为它非常令人沮丧,但现在效果很好