2016-03-30 5 views
1

Ich versuche Push-Benachrichtigungen vom Web-Backend (JavaScript) mit QuickBlox Push Notification API an iOS-Geräte zu senden. Ich habe ein Abonnement in der iOS-App erstellt und versucht, Push-Benachrichtigungen von JavaScript an abonnierte Benutzer zu senden.Senden von Push-Benachrichtigungen aus dem Web (JavaScript) nicht möglich QuickBlox

Die iOS-App-Code ist zu abonnieren, wie folgt:

- (void)loginAndConnectToChatQBUserWithLoginName:(NSString *)loginName password:(NSString *)password{ 
    isConnecting = YES; 

    QBUUser *user = [[QBUUser alloc] init]; 
    user.login = loginName; 
    user.password = password; 

    __weak typeof(self) weakSelf = self; 

    //Authenticate user 

    [QBRequest logInWithUserLogin:user.login password:user.password successBlock:^(QBResponse * _Nonnull response, QBUUser * _Nullable user) { 
     NSLog(@"Logged in"); 
     [weakSelf registerForRemoteNotifications]; 

     [AppDelegate appDelegate].currentUser = user; 

     user.password = password; 

     [QBChat.instance connectWithUser:user completion:^(NSError * _Nullable error) { 
      if (QBChat.instance.isConnected) { 
       NSLog(@"chat is connected"); 
      } 
      else{ 
       NSLog(@"chat not connected"); 
      } 

      isConnecting = NO; 
     }]; 
    } errorBlock:^(QBResponse * _Nonnull response) { 
     // Handle error here 
     NSLog(@"Unable to connect"); 
     isConnecting = NO; 
    }]; 
} 

- (void)registerForRemoteNotifications{ 

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) { 

     [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; 
     [[UIApplication sharedApplication] registerForRemoteNotifications]; 
    } 
    else{ 
     [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound]; 
    } 
#else 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound]; 
#endif 
} 

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ 
    NSString *deviceIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; 

    QBMSubscription *subscription = [QBMSubscription subscription]; 
    subscription.notificationChannel = QBMNotificationChannelAPNS; 
    subscription.deviceUDID = deviceIdentifier; 
    subscription.deviceToken = deviceToken; 

    [QBRequest createSubscription:subscription successBlock:^(QBResponse *response, NSArray *objects) { 
     //Subscription Successfull 
     NSLog(@"Subscription Successfull."); 

    } errorBlock:^(QBResponse *response) { 
     //Subscription Failure 
    }]; 
} 

erstellen Antwort Abonnement Erfolg wie folgt lautet:

[QBResponse], status: 201 

-Code Push-Benachrichtigung von JavaScript zu senden ist wie folgt:

var pushCustomParams = { 
    message: 'Message received from Bob', 
    ios_badge: 1, 
    ios_sound: 'mysound.wav', //Sound File name 
    user_id: '234', //Caller User ID 
} 

var params = { 
    notification_type: 'push', 
    user: {ids: [110678]}, // recipients. 
    environment: 'development', // environment, can be 'production' as well. 
    message: QB.pushnotifications.base64Encode(JSON.stringify(pushCustomParams)) 
}; 

QB.pushnotifications.events.create(params, function(err, response) { 
    if (err) { 
    console.log(err); 
    } else { 
    // success 
    } 
}); 

Beim Erstellen bei Ereignis bekomme ich die ganze Zeit einen Fehler:

Bitte schlagen Sie mir vor, was ich im Code falsch mache.

Antwort

2

Um einen Push Sie als Benutzer

Dazu müssen Sie eine Sitzung mit Benutzer erstellen müssen handeln müssen senden

so sollte Ihr Code aussehen:

var params = {login: 'garry', password: 'garry5santos'}; 

QB.createSession(params, function(err, result) { 
    if(!err){ 
    // send a push code 
    } 
}); 
+0

Danke @lgor, es hat funktioniert. –

+0

Jetzt ist kein Fehler im Web und die Benachrichtigung ist auch in der Warteschlange quickblox Push-Liste, aber keine Benachrichtigung auf dem Gerät. Ich kann Push empfangen, wenn ich von der Webkonsole aus sende. Bitte schlagen Sie vor, was als nächstes zu tun ist. –

+0

@RaviGupta Bitte überprüfen Sie, ob Sie alles korrekt in Ihrer iOS App eingestellt haben: http://quickblox.com/developers/SimpleSample-messages_users-ios –