Quickblox的“离线用户自动推送通知”无法正常工作

时间:2015-03-09 11:20:02

标签: ios apple-push-notifications quickblox

我有以下情况。 用户A在前台向用户B发送消息 - 这是有效的 当应用程序处于后台时,从“消息”控制台向用户B发送推送通知 - 这是有效的

我想在app处于后台时向用户B发送通知提醒。我读到这是由quickblox自动完成的,但对我来说并没有发生。

我已按照this link

的说明操作

我在开发模式下使用'Starter'帐户。我们是否需要使用“服务器端历史记录”来获取此功能?

修改1 : 澄清:我想发送“离线用户的自动推送通知”,而不是来自应用的通知。我也发送了链接中提到的'save_to_history'标志。

2 个答案:

答案 0 :(得分:1)

用于在代码

下面发送推送通知
-(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

答案 1 :(得分:0)

发现问题。

我们必须在应用进入后台时从聊天中退出。 我认为,这可能需要让服务器知道我们实际上是离线的,它应该向我们发送推送通知。 (只是一个猜测!)

我认为在文档中也提到了注销事项,但我并不知道它是如此重要。