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.
Danke @lgor, es hat funktioniert. –
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. –
@RaviGupta Bitte überprüfen Sie, ob Sie alles korrekt in Ihrer iOS App eingestellt haben: http://quickblox.com/developers/SimpleSample-messages_users-ios –