0

Я пытаюсь реализовать Push-уведомления с помощью this учебника. Чат с PubNub работает отлично. Я также могу отправлять и получать Push-уведомления с помощью скрипта this, но только с сертификатом разработки, поэтому я отправил его в PubNub. (Кто-нибудь знает, почему я создал как сертификаты для моего приложения?) Когда я открываю приложение, я получаю сообщение со всеми ключами, как я вижу это в DebugConsole:Не удается отправить/получить Push-уведомления PubNub в iOS

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

Я покажу все шаги, которые, как я думаю, актуальны для Push-уведомлений, поэтому, пожалуйста, скажите, что я что-то забыл или сделал что-то не так.

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) { }]; 

отправить PubNub-чат сообщение

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) {}]; 

ответ

0

Я был глуп, чтобы подписаться на правый канал. В didRegisterForRemoteNotificationsWithDeviceToken вы должны использовать свой уникальный идентификатор канала, вместо @"apns" ...

Спасибо за вашу помощь

1

Разделители Dev и prod не являются взаимозаменяемыми. Удостоверьтесь, что вы не сломали

«Путь Правило трех».

Есть два набора триплетов:

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". 

Это прод шлюз:

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

И это dev gateway:

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

+0

Ok, спасибо. Я загрузил сейчас dev-cert в PubNub и также использую Dev-App (запущен с Xcode), но он не работает ... – Steeve

+0

Как вы устанавливаете токен на сервере? Ток-токен отличается между prod и dev, и он может все равно измениться. Если у вас неправильный или старый, то нажатие не будет работать. – Gruntcakes

+0

Я установил Push-Token на сервере в didRegisterForRemote .... С вызовом self.client addPushNotifications ... – Steeve

Смежные вопросы