2016-04-18 27 views
1

アマゾンの通知をプッシュ通知にするのが2日以来、私のipadで動作するように苦労しています。 GoogleとYouTubeで夜間を過ごした後、私は絶望的です。アマゾンのドキュメントは本当に役に立ちません。私はすでに今までやったAWS SNSからプッシュ通知をiPadに送信できません

私はリンゴから証明書を持って、成功したSNSへの.P12ファイルをアップロードし、アプリケーションプラットフォームを作成し、エンドポイントを設定します。

xcodeのviewcontrollerで私のCognitoの資格情報を設定し、appdelegateに通知リスナーを追加しました。

だから私はiPadでアプリを実行すると、これはxcodeプロンプトにdeviceTokenを正常に表示します。だから私はそれをSNSコンソールに入力して設定することができます。私は、エンドポイントに公開しようとしているとき

だから私は(私のデバイスに通知を送信)、残念ながら、すべての必要な原料(証明書、.P12、devicetokenなどを登録するに)

を作成し、私は受け取っていません任意の通知。私は何が悪くなっているのか本当に知りません。しかし、私は電子メールにプッシュを送信して同じことをしようとしているとき、その作品は完璧です。

私はYouTubeで数多くのチュートリアルを見て、ウェブ上のいくつかのドキュメントに従っていましたが、間違いなく動作しているようです。

Xcodeでは、Appleのデベロッパーアカウント(com.XXX.XXX)と同じバンドルIDを入力するのを忘れていなかったので、私のアプリはうまく構成されていると思います。

アマゾンのドキュメントは、ウェブ上に優しい、ほとんどのチュートリアルをdevのされていない、時代遅れです

は、誰かがiPadにアマゾンSNSからのプッシュ通知を送信するのに最適な手順を知っていますか?

ありがとうございます。

+0

回答としてSTEP5で取得した値を使用してください: "PlatformPrincipal"

STEP 10として、STEP4で取得した値を使用してください。 1)開発/配布プロファイルを使用してアプリケーションを実行していますか? 2)Amazon SNSにDev/Dist証明書.p12を使用していますか? 3)あなたのペイロードは何ですか? 4)AppDelegate.mファイルに実装したPushNotificaitonデリゲートメソッドはどれですか?これに基づいて問題を見つけ出すことができます –

+0

1)私は私のテストで両方のdev/distributionプロファイルを使用しましたが、どれも働いていませんでした。 2)p12のために同じことをやってみました。私のアプリケーションデリゲートで、アプリケーション、 –

+0

プッシュ通知[ここではオンライン](apns-gcm.bryantan.info)をテストできます。あなたは次のターミナルコマンド 'openssl pkcs12 -in path.p12 -out newfile.pem'を使用して.p12ファイルから.pemファイルを作成するだけです(詳細はこちら)(http://cc.in2p3.fr/docenligne/84/en )。 Dev/Dist両方の証明書でAPNSを確認します。それがうまくいくなら、あなたはAmazon SNSでprobを持っています。そうでなければあなたはurで何か間違っています証明書またはプロフィール –

答えて

1

昨晩私はAWS SNSを正常に統合しました。 はい、AWSの文書は十分に文書化されていません。

SNSを統合するには、APNSを完全に設定する必要があります。 APNSを使用して通知を受け取るために必要なすべての資格情報を最初に設定することをお勧めします。 ここでは、開発者がAPNのApp ID、.p12、.pem、およびプロビジョニングプロファイルを作成する方法を知っていることを期待しています。 APNを使用してデバイス上の通知を正常に取得すると、すばやくSNSの準備が整います。 APN通知をテストするには、このサーバー "www.pushtry.com"を使用できます。

すべてが正常にAPNSで完了したら、AWSアカウントにジャンプ>> SNSダッシュボードをナビゲート>>プラットフォームアプリケーションを作成します。フォームは、アプリケーションデータや証明書のいくつかの資格エントリを言及するのを開くアプリケーションの作成打った後

enter image description here

。 以下の手順を実行するには、下の図を参照してください。 パスワード入力は、.p12証明書ごとにオプションです。 「ファイルから資格情報をロードする」を押すと、証明書と秘密鍵の入力が自動的に行われます。作成したアプリケーションのリストを表示するには、アプリケーションの左ペインにナビゲートし、「プラットフォームアプリケーションの作成」を打った後

enter image description here

ここでエンドポイントを作成する必要があります。 添付の画像を参照してください。 enter image description here

ここで、エンドポイントの項目を入力して、下の画像に従ってください。

enter image description here

は、今お使いのデバイスにメッセージをプッシュするAWSコンソールに使用するエンドポイントのARNをコピーします。エンドポイントは実際にはAWSのAPNSのトークンのようなデバイスのアドレスです。エンドポイントを完全にコピーしたことを確認してください。今

enter image description here

再びメッセージを公開する "SNSダッシュボード" に飛び込みます。

​​

今、この形式でコピーした「エンドポイントARN」とあなたのテキストメッセージを貼り付け、画像の下のあたりに「メッセージを公開」ヒット。 これで、デバイスを確認して通知を受け取ります。

enter image description here

======================================== =============================

上記はAWS SNSコンソールで通知をプッシュすると説明しています。

ここで、アプリケーションとエンドポイントARNを作成するコードを追加します。

+ (void) initAWSObjectToAccessAccount 
{ 
    // Initialize the Amazon Cognito credentials provider.  
    AWSStaticCredentialsProvider* credentialsProvider = [AWSStaticCredentialsProvider 
                 credentialsWithAccessKey:kAWSAccessKey 
                 secretKey:kAWSSecretKey]; 

    AWSServiceConfiguration* configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSWest2 
                      credentialsProvider:credentialsProvider]; 

    [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration; 
} 


+ (void) createApplicationAndGetAppARN: (void (^) (BOOL isCreated, NSString* appARN))completion 
{ 
    [self initAWSObjectToAccessAccount]; 

    NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init]; 
    [myDictionary setObject:kCertificateSecretKey forKey:@"PlatformPrincipal"]; 
    [myDictionary setObject:kCertificatePrivateKey forKey:@"PlatformCredential"]; 

    /* End Amazon SNS Mobile Push self registration */ 
    AWSSNSCreatePlatformApplicationInput* platFormAppInput = [AWSSNSCreatePlatformApplicationInput new]; 
    platFormAppInput.name = @"nFormIOS"; 
    platFormAppInput.platform = @"APNS";   // When Release 
    //platFormAppInput.platform = @"APNS_SANDBOX"; // When Development phase 
    platFormAppInput.attributes = myDictionary; 

    AWSSNS *snsManager = [AWSSNS defaultSNS]; 
    [[[snsManager createPlatformApplication:platFormAppInput] continueWithBlock:^id(BFTask *task) { 

     if (task.error) 
     { 
      completion (NO, nil); 
     } 
     else 
     { 
      AWSSNSCreatePlatformApplicationResponse* appResponse = task.result; 
      NSString* applicationARN = appResponse.platformApplicationArn; 
      completion (YES, applicationARN); 
     } 

     return nil; 

    }] waitUntilFinished]; 
} 

+ (void) createSNSEndPoint:(NSString*)applicationARN 
       completion:(void (^)(BOOL isSuccess, NSString* endpointARN))completion 
{ 
    /* This is the code to actually register the device with Amazon SNS Mobile Push based on the token received. */  
    AWSSNSCreatePlatformEndpointInput* platformEndpointRequest = [AWSSNSCreatePlatformEndpointInput new]; 
    platformEndpointRequest.customUserData = kUniqueID;  // It could be anything. 
    platformEndpointRequest.token = kDeviceTokenNo;   // Device Token No for APNS 
    platformEndpointRequest.platformApplicationArn = applicationARN; 

    AWSSNS* snsManager = [AWSSNS defaultSNS]; 

    [[[snsManager createPlatformEndpoint:platformEndpointRequest] continueWithBlock:^id(BFTask *task) { 

     if (task.error) 
     { 
      completion (NO, nil); 
     } 
     else 
     { 
      AWSSNSCreateEndpointResponse* endPointRes = task.result; 
      completion (YES, endPointRes.endpointArn); 
     } 

     return nil; 
    }] waitUntilFinished]; 
} 

===========================

kAWSAccessKey kAWSSecretKey

これは、AWSアカウントで資格情報を作成するときに表示されます。

kCertificateSecretKey kCertificatePrivateKey

これら二つのステップに従っ取得します。

/* STEP 1:(.cerファイル)SSL証明書を取得し

STEP 2:myapnsappcert -outの.pem のopensslのx509 -in aps.cer -inform DERに変換するには、次のコマンドを使用します。 pem

ステップ3:NotePadでファイルを開きます。次のように囲まれた部分をコピーします。 を----- BEGIN CERTIFICATE ----- ----- END CERTIFICATE -----の

STEP 4:NSStringのは、特殊文字(改行を交換するとして、それを使用します)をエスケープシーケンス(\ n)で置き換えます。それは今、こののようになります。

-----証明書をBEGIN ----- \ nMIIGKTCCBRGgAwIBAgIILZH6mrSmUj8wDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV \ n個...... \ nの---- END CERTIFICATE -----の

STEP 5: のopensslのpkcs12 -in CertificatesSNS.p12 -out myapnsappp rivatekey.pem -nodes -clcerts

:秘密鍵を取得するには、次のコマンドを使用します.P12

STEP 6として.cerファイルを保存しますステップ7:ノートパッドでファイルを開きます。コピーとして境界部分は、以下:

----- RSA秘密鍵をBEGIN ----- ----- END RSA PRIVATE KEY -----

ステップ8:ステップ4を繰り返しこのためにも。

STEP 9:質問に、次の "PlatformCredential" */

関連する問題