0

コンテキスト:
cocos2d-x (v.3.8.1) アプリケーションを Parse から App42 に移行しようとしています。プッシュ通知以外は問題ありません。
私がすること:私はこのガイド
に従います:

.p12->.pem->.p12 -変換を使用して App42 互換の .p12 証明書を作成します
- この証明書を App42 にアップロードします。これらはサーバー上で緑色で強調表示されます
- Cocos2d-x 用の最新の App42 SDK ver.2.1 をダウンロードしてインストールします -
にプッシュ通知を登録し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);
}

- シングルトンで APNS を使用して App42 をバインドし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、作成されたユーザーが正しいデバイス トークンで表示されます。
サーバーでそれを選択して彼に通知をプッシュすると、この通知は送信済みとして表示されます。しかし、デバイスで通知を受け取ることができます。
私はやろうとしていました:同じ結果で Cocos2d-x のプッシュ通知プラグイン
を使用しようとしました。 また、APN Tester を使用しました。 App42 SDK for iOS も試すことができますが、これは App42Methods クラス全体を書き直すことになります。これは避けたいと思います。 Parse.com ではプッシュ通知が正常に機能しました。
«Failure performing handshake, error code -9806»

私が間違っていることを教えてください。App42 は APNS に接続していないようですが、その理由はわかりません。
どんな助けでも大歓迎です。

4

1 に答える 1

1

通常、ハンドシェイクの問題は、p12 ファイルの問題が原因で発生します。同じことについてこの投稿を参照できます。同じチュートリアルに従って .p12 ファイルを再作成し、試してみることをお勧めします。それでも問題が解決しない場合は、support@shephertz.com またはApp42 コミュニティ フォーラムに書き込み、迅速に解決してください。

于 2016-02-16T06:18:08.820 に答える