将通知从 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