昨晩私はAWS SNSを正常に統合しました。 はい、AWSの文書は十分に文書化されていません。
SNSを統合するには、APNSを完全に設定する必要があります。 APNSを使用して通知を受け取るために必要なすべての資格情報を最初に設定することをお勧めします。 ここでは、開発者がAPNのApp ID、.p12、.pem、およびプロビジョニングプロファイルを作成する方法を知っていることを期待しています。 APNを使用してデバイス上の通知を正常に取得すると、すばやくSNSの準備が整います。 APN通知をテストするには、このサーバー "www.pushtry.com"を使用できます。
すべてが正常にAPNSで完了したら、AWSアカウントにジャンプ>> SNSダッシュボードをナビゲート>>プラットフォームアプリケーションを作成します。フォームは、アプリケーションデータや証明書のいくつかの資格エントリを言及するのを開くアプリケーションの作成打った後
。 以下の手順を実行するには、下の図を参照してください。 パスワード入力は、.p12証明書ごとにオプションです。 「ファイルから資格情報をロードする」を押すと、証明書と秘密鍵の入力が自動的に行われます。作成したアプリケーションのリストを表示するには、アプリケーションの左ペインにナビゲートし、「プラットフォームアプリケーションの作成」を打った後
。
ここでエンドポイントを作成する必要があります。 添付の画像を参照してください。
ここで、エンドポイントの項目を入力して、下の画像に従ってください。
は、今お使いのデバイスにメッセージをプッシュするAWSコンソールに使用するエンドポイントのARNをコピーします。エンドポイントは実際にはAWSのAPNSのトークンのようなデバイスのアドレスです。エンドポイントを完全にコピーしたことを確認してください。今
再びメッセージを公開する "SNSダッシュボード" に飛び込みます。
今、この形式でコピーした「エンドポイントARN」とあなたのテキストメッセージを貼り付け、画像の下のあたりに「メッセージを公開」ヒット。 これで、デバイスを確認して通知を受け取ります。
======================================== =============================
上記は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" */
回答としてSTEP5で取得した値を使用してください: "PlatformPrincipal"
STEP 10として、STEP4で取得した値を使用してください。 1)開発/配布プロファイルを使用してアプリケーションを実行していますか? 2)Amazon SNSにDev/Dist証明書.p12を使用していますか? 3)あなたのペイロードは何ですか? 4)AppDelegate.mファイルに実装したPushNotificaitonデリゲートメソッドはどれですか?これに基づいて問題を見つけ出すことができます –
1)私は私のテストで両方のdev/distributionプロファイルを使用しましたが、どれも働いていませんでした。 2)p12のために同じことをやってみました。私のアプリケーションデリゲートで、アプリケーション、 –
プッシュ通知[ここではオンライン](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で何か間違っています証明書またはプロフィール –