我正在尝试为使用quickblox的应用设置推送通知。 我已经上传了正确的iOS证书和Google Key,
我可以:
从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);
}];
答案 0 :(得分:0)
显然,我们不小心使用了一种只从iOS发送推送通知的特定方法。
在我们使用通用QBEvent后,它已被修复
答案 1 :(得分:0)
你不能使用sendPush:toUsers:successBlock:errorBlock:方法。 获取您的QBMPushMessage *消息变量并使用此代码段。
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) {
}];