将通知从 iOS 推送到 Android 不起作用

Posted

技术标签:

【中文标题】将通知从 iOS 推送到 Android 不起作用【英文标题】:Push notifications from iOS to Android not working 【发布时间】:2015-08-11 15:42:23 【问题描述】:

我正在尝试为我们使用 quickblox 的应用设置推送通知。 我已上传正确的 ios 证书和 Google 密钥,

我可以:

iOS发送到iOS

android发送到Android

Android发送到iOS

但是当我尝试从 iOS 发送到 android 时,SDK 出现错误:

“没有收件人。至少应为一名用户订阅 APNS(Apple 推送)(通过 SDK 或 REST API)"]

这很奇怪,因为我正在尝试向GCM device 发送消息,但错误提示没有APNS device

我该如何解决这个问题?从iOS 推送到Android 会中断什么?

这就是我发送推送的方式

QBMPushMessage *pushMessage = [QBMPushMessage new];
pushMessage.alertBody = pushText;

NSMutableDictionary *additionalParams = [NSMutableDictionary new];
[additionalParams setObject:@1 forKey:@"isFromChat"];
if(dialogId)
    [additionalParams setObject:dialogId forKey:@"dialogId"];


[additionalParams setObject:messageText forKey:@"messageText"];


pushMessage.additionalInfo = additionalParams;

[QBRequest sendPush:pushMessage toUsers:recipientID successBlock:^(QBResponse *response, QBMEvent *event) 

    NSLog(@"Push was sent successfully to: %@", recipientID);

 errorBlock:^(QBError *error) 
    NSLog(@"Push Error: %@", error);
];

【问题讨论】:

我没有 QB 的实际经验,但我会检查我的设备的 udid。可能一个或多个用户推送 ID 已被撤销,这就是它无法发送/接收的原因。欲了解更多信息:check this answer. 【参考方案1】:

显然,我们不小心使用了一种仅从 iOS 向 iOS 发送推送通知的特定方法。

在我们使用通用 QBEvent 后,它被修复了

【讨论】:

【参考方案2】:

你不能使用 sendPush:toUsers:successBlock:errorBlock: 方法。 获取您的 QBMPushMessage *message 变量并使用此 sn-p。

QBMEvent *event = [QBMEvent event];
event.notificationType = QBMNotificationTypePush;
event.usersIDs = users;
event.type = QBMEventTypeOneShot;

NSError *error = nil;
NSData *sendData = [NSJSONSerialization dataWithJSONObject:message.payloadDict options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:sendData encoding:NSUTF8StringEncoding];

if (error) 
    //error handling


event.message = jsonString;

[QBRequest createEvent:event successBlock:^(QBResponse * _Nonnull response, NSArray<QBMEvent *> * _Nullable events) 

 errorBlock:^(QBResponse * _Nonnull response) 

];

【讨论】:

以上是关于将通知从 iOS 推送到 Android 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 AFNetworking 将 Firebase 通知从 ios 设备推送到花药

无需谷歌云消息(GCM)将通知从 PC 推送到 android

将通知从 python 推送到 android

将通知从 Web 服务器推送到 Android 应用程序

如何使用 Google Cloud Messaging 将通知推送到 iOS

Swift Parse:如何将通知推送到特定的设备/objectId