Quickblox 'automatic push notifications for offline user' 不工作
Quickblox 'automatic push notifications for offline user' not working
我有以下场景。
用户 A 在前台向用户 B 发送消息——这是有效的
当应用程序处于后台时,从 'Messages' 控制台向用户 B 发送推送通知——这正在工作
我想在应用程序处于后台时向用户 B 发送通知警报。我读到这是由 quickblox 自动完成的,但对我来说并没有发生。
我已按照 this link
上的说明进行操作
我在开发模式下使用 'Starter' 帐户。我们是否需要具有“服务器端历史记录”的帐户才能使用此功能?
编辑 1:
澄清:我想发送“离线用户自动推送通知”,而不是来自应用程序的通知。我还发送 'save_to_history' 标志,如 link.
中所述
发送推送通知使用下面的代码
-(void)applicationDidEnterBackground:(UIApplication *)application
{
[self sendMessageNotification:@"Hello Push notification" :1234 ];
}
-(void)sendMessageNotification:(NSInteger)recipientID message:(NSString*)message
{
isSentPushNotification = YES;
//[self sendPushNotificationToUser:message ids:@"1" audioFileName:@"default"];
NSMutableDictionary *payload = [NSMutableDictionary dictionary];
NSMutableDictionary *aps = [NSMutableDictionary dictionary];
[aps setObject:@"default" forKey:QBMPushMessageSoundKey];
[aps setObject:message forKey:QBMPushMessageAlertKey];
[aps setObject:@"1" forKey:QBMPushMessageAlertLocArgsKey];
[payload setObject:aps forKey:QBMPushMessageApsKey];
QBMPushMessage *pushMessage = [[QBMPushMessage alloc] initWithPayload:payload];
// Send push to users with ids 292,300,1395
[QBRequest sendPush:pushMessage toUsers:[NSString stringWithFormat:@"%lu",(long)recipientID]successBlock:^(QBResponse *response, QBMEvent *event) {
NSLog(@"Successfully dilivered push notification");
} errorBlock:^(QBError *error) {
NSLog(@"Fail to diliver push notification %@",error);
}];
}
但您应该先订阅用户以接收推送通知
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
// Register subscription with device token
[QBRequest registerSubscriptionForDeviceToken:deviceToken successBlock:^(QBResponse *response, NSArray *subscriptions) {
// Registration succeded
} errorBlock:^(QBError *error) {
// Handle error
}];
}
详情请看this
找到问题了。
当应用程序进入后台时,我们必须退出聊天。
我认为,这可能需要让服务器知道我们实际上处于离线状态,它应该向我们发送推送通知。 (只是猜测!!)
我认为文档中也提到了注销的事情,但我不知道它如此重要。
我有以下场景。 用户 A 在前台向用户 B 发送消息——这是有效的 当应用程序处于后台时,从 'Messages' 控制台向用户 B 发送推送通知——这正在工作
我想在应用程序处于后台时向用户 B 发送通知警报。我读到这是由 quickblox 自动完成的,但对我来说并没有发生。
我已按照 this link
上的说明进行操作我在开发模式下使用 'Starter' 帐户。我们是否需要具有“服务器端历史记录”的帐户才能使用此功能?
编辑 1: 澄清:我想发送“离线用户自动推送通知”,而不是来自应用程序的通知。我还发送 'save_to_history' 标志,如 link.
中所述发送推送通知使用下面的代码
-(void)applicationDidEnterBackground:(UIApplication *)application
{
[self sendMessageNotification:@"Hello Push notification" :1234 ];
}
-(void)sendMessageNotification:(NSInteger)recipientID message:(NSString*)message
{
isSentPushNotification = YES;
//[self sendPushNotificationToUser:message ids:@"1" audioFileName:@"default"];
NSMutableDictionary *payload = [NSMutableDictionary dictionary];
NSMutableDictionary *aps = [NSMutableDictionary dictionary];
[aps setObject:@"default" forKey:QBMPushMessageSoundKey];
[aps setObject:message forKey:QBMPushMessageAlertKey];
[aps setObject:@"1" forKey:QBMPushMessageAlertLocArgsKey];
[payload setObject:aps forKey:QBMPushMessageApsKey];
QBMPushMessage *pushMessage = [[QBMPushMessage alloc] initWithPayload:payload];
// Send push to users with ids 292,300,1395
[QBRequest sendPush:pushMessage toUsers:[NSString stringWithFormat:@"%lu",(long)recipientID]successBlock:^(QBResponse *response, QBMEvent *event) {
NSLog(@"Successfully dilivered push notification");
} errorBlock:^(QBError *error) {
NSLog(@"Fail to diliver push notification %@",error);
}];
}
但您应该先订阅用户以接收推送通知
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
// Register subscription with device token
[QBRequest registerSubscriptionForDeviceToken:deviceToken successBlock:^(QBResponse *response, NSArray *subscriptions) {
// Registration succeded
} errorBlock:^(QBError *error) {
// Handle error
}];
}
详情请看this
找到问题了。
当应用程序进入后台时,我们必须退出聊天。 我认为,这可能需要让服务器知道我们实际上处于离线状态,它应该向我们发送推送通知。 (只是猜测!!)
我认为文档中也提到了注销的事情,但我不知道它如此重要。