0

Ich versuche Push-Benachrichtigungen mit this Tutorial zu implementieren. Chat mit PubNub funktioniert perfekt. Ich kann auch Push-Benachrichtigungen mit this Skript senden und empfangen, aber nur mit dem Entwicklungszertifikat, also habe ich dies an PubNub übermittelt. (Weiß jemand, warum ich beiden Zertifikate für meine App erstellt habe?) Wenn ich die App öffnen, ich habe die Nachricht mit allen Keys erhalten, wie ich es in der DebugConsole sehen:Ich kann PubNub Push-Benachrichtigungen nicht senden/empfangen an iOS

{ "message": "Asdas", 
    "pn_apns": { 
    "aps": { 
     "alert": "To Apple and PN Native devices!" 
    } 
    }, 
    "senderId": "mySenderId", 
    "receiverId": "myReceiverId" 
} 

zeige ich werde die ganze Schritte, die für Push-Benachrichtigungen relevant sind, also bitte sagen, wenn ich etwas vergessen habe oder etwas falsch gemacht habe.

didFinishLaunching

UIUserNotificationType types = (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert); 
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil]; 
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings]; 
[[UIApplication sharedApplication] registerForRemoteNotifications]; 
PNConfiguration *configuration = [PNConfiguration configurationWithPublishKey:@"pub-key" subscribeKey:@"sub-key"]; 
self.client = [PubNub clientWithConfiguration:configuration]; 
[self.client addListener:self]; 
[self.client subscribeToChannels:@"myChannelId" withPresence:NO]; 

didRegisterForRemoteNotificationsWithDeviceToken

[self.client addPushNotificationsOnChannels:@[@"apns"] withDevicePushToken:deviceToken andCompletion:^(PNAcknowledgmentStatus *status) { }]; 

eine PubNub-Chat Nachricht senden

NSDictionary * dict = @{@"aps": @{@"alert":@"To Apple and PN Native devices!"}}; 
[self.client publish:@{@"message" : @"Hello!", @"senderId" : @"abc123", @"receiverId" : @"abc124"} toChannel:@"myChannel" mobilePushPayload:dict withCompletion:^(PNPublishStatus *status) {}]; 

Antwort

0

Ich war zu dumm für den rechten Kanal zu abonnieren. Am didRegisterForRemoteNotificationsWithDeviceToken Sie Ihren einzigartigen Channel ID, statt @"apns" verwenden sollen ...

Vielen Dank für Ihre Hilfe

1

Dev- und Prod-Pushs sind nicht austauschbar. Stellen Sie sicher, dass Sie die

"Push Rule of Three" nicht gebrochen haben.

Es gibt zwei Gruppen von Tripletts:

a) Prod app - Prod gateway - Prod certificate 
b) Dev app - Dev gateway - Dev certificate 
You can't mix and match these together, if you have any combination that isn't either 3 Production things or 3 Dev things then the push won't work. This is the "Push Rule of Three". 

Dies ist prod Gateway:

ssl: //gateway.push.apple.com: 2195

Und das ist das Dev Gateway:

ssl: //gateway.sandbox.push.apple.com: 2195

+0

Ok, danke. Ich habe jetzt das dev-cert auf PubNub hochgeladen und benutze auch die Dev-App (gestartet mit Xcode), aber es funktioniert nicht ... – Steeve

+0

Wie stellst du das Push-Token auf dem Server ein? Der Push-Token unterscheidet zwischen prod und dev und kann sich trotzdem ändern. Wenn Sie eine falsche oder alte haben, dann funktioniert Push nicht. – Gruntcakes

+0

Ich setze den Push-Token auf dem Server in didRegisterForRemote .... Mit dem Aufruf self.client addPushNotifications ... – Steeve