2016-02-15 2 views
0

Контекст:
Я пытаюсь перенести мое приложение cocos2d-х (v.3.8.1) от Parse к App42. Все в порядке, кроме push-уведомлений.
Что я делаю:
Я следую за этим guide:App42: толчок уведомление не приходит КСНО устройство

-make App42 совместимые P12-сертификаты с использованием .p12->.pem->.p12 преобразования
- загрузить эти сертификаты на App42, они выделены зеленым цветом на сервере
- скачать и установить последнюю версию SDK App42 ver.2.1 для Cocos2d-х
- регистр уведомления толчка в Appcontroller.mm:

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    … 
     // Register for Push Notitications 
     App42API::Initialize(APP42_KEY, APP42_SECRET); 
     if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { 
      UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeBadge 
                           |UIRemoteNotificationTypeSound 
                           |UIRemoteNotificationTypeAlert) categories:nil]; 
      [application registerUserNotificationSettings:settings]; 
      [application registerForRemoteNotifications]; 
     } else { 
      UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound; 
      [application registerForRemoteNotificationTypes:myTypes]; 
     } 
     … 
} 

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    NSString * deviceTokenString = [[[[deviceToken description] 
             stringByReplacingOccurrencesOfString: @"<" withString: @""] 
            stringByReplacingOccurrencesOfString: @">" withString: @""] 
            stringByReplacingOccurrencesOfString: @" " withString: @""]; 
    app42->saveDeviceToken([deviceTokenString UTF8String]); // app42 is my singleton class for App42 methods 
} 

-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings 
{ 
    [application registerForRemoteNotifications]; 
} 

-(void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error 
{ 
    NSLog(@"Failed to get token, error: %@", error); 
} 

-bind App42 с APNS в моем одноточечном App42Methods:

void App42Methods::saveDeviceToken(string _deviceToken) 
{ 
    int tag = TAG_DEVICE_TOKEN; 
    deviceToken = _deviceToken; 
    string userName = deviceToken.substr(0, 25); 

    PushNotificationService::Initialize(APP42_KEY, APP42_SECRET); 
    DeviceType deviceType = APP42_IOS; 
    PushNotificationService* pushNotificationService = PushNotificationService::getInstance(); 
    pushNotificationService->RegisterDeviceToken(_deviceToken.c_str(), userName.c_str(), deviceType, app42callback(App42Methods::onPushRequestCompleted, this)); 
} 

void App42Methods::onPushRequestCompleted(void *response) 
{ 
    App42PushNotificationResponse *pushResponse = (App42PushNotificationResponse*)response; 
    if (pushResponse->isSuccess) 
    { 
     log("Push notification service registered!"); 
    } 
    else 
    { 
     printf("\nerrordetails:%s",pushResponse->errorDetails.c_str()); 
     printf("\nerrorMessage:%s",pushResponse->errorMessage.c_str()); 
     printf("\nappErrorCode:%d",pushResponse->appErrorCode); 
     printf("\nhttpErrorCode:%d",pushResponse->httpErrorCode); 
    } 
} 

Таким образом, процесс регистрации в порядке. Я получаю "Push notification service registered!" в журналах, на сервере App42 Cloud API -> Unified Notifications -> Push Users Я вижу созданного пользователя с правильным токеном устройства.
Я выбираю его на сервере и нажимаю на него уведомление, это уведомление отображается как отправленное. Но я могу получать уведомления на своем устройстве.
Я пытался:
Я попытался использовать Push Notification Plugin для Cocos2d-x с тем же результатом.
Также я использовал APN Tester, он регистрирует «Failure performing handshake, error code -9806».
Я могу попробовать App42 SDK для iOS, но это приведет к перезаписи всего класса App42Methods. Я бы хотел этого избежать.
Push-уведомления отлично работали на Parse.com.

Пожалуйста, скажите мне, что я делаю неправильно? Кажется, App42 не подключается к APNS, но я понятия не имею, почему.
Любая помощь будет оценена по достоинству.

ответ

1

Проблема с рукопожатием обычно возникает из-за проблемы в файле p12. Вы можете сослаться на this post. Я предлагаю вам воссоздать файл .p12, следуя тому же учебнику, и попробуйте. Если вы все еще сталкиваетесь с проблемой, вы можете написать на [email protected] или App42 community forum для быстрого разрешения.

+0

Большое спасибо за отзыв! Это было связано с отсутствием промежуточного сертификата Apple WWDR. Я удалил старый сертификат, добавил новые и переделал файлы .p12, и теперь все работает! – alc77

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

  • Нет связанных вопросов^_^