AWS SNSを用いたPUSH通知
AWSのSNSを用いてPUSH通知を実装しようと思っているのですが、
AWSのSNSのダッシュボードでの"enable"がfalseになってしまいPUSHが遅れません。
public function testPush(){
$my_id = 4;//Pushを送信するユーザーのID
$user_id_array = [3,6];//Pushを受け取るユーザーのID
$my_name = $this->getUser($my_id);//ユーザーの名前を取得する関数
foreach($user_id_array as $user_id){
//DBに保存した各ユーザーのデバイストークンを取得する。
$device_token = $this->getToken($user_id);
$user_name = $this->getUser($user_id);
if($device_token != null && $user_name != null){
$msg = "$user_name".'さん'."$my_name".'さんよりメッセージが届いています。';
$this->PushTo->PushSNS($msg,$device_token);
}
}
}
//PUSH通知を送信
public function pushSNS($msg,$device_token){
$sns = SnsClient::factory(array(
'credentials' => array(
//アクセスのための公開鍵と秘密鍵を指定
'key' => '************',
'secret' => '************',
),
'region' => 'ap-northeast-1', // AP_NORTHEAST_1はtokyo region
'version' => '2010-03-31',
));
//アプリケーションを指定(Application ARN:Amazon SNS上に表記されている)
//Product
$iOS_AppArn = 'arn:aws:sns:ap-northeast-1:****************';
$iOS_model = $sns->listEndpointsByPlatformApplication(array(
'PlatformApplicationArn' => "$iOS_AppArn",
));
//通知メッセージ
$alert = $msg;
// それぞれのエンドポイントへメッセージを送る
foreach ($iOS_model['Endpoints'] as $endpoint){
$endpointArn = $endpoint['EndpointArn'];
$enable = $endpoint['Attributes']['Enabled'];
$endpoint_device_token =$endpoint['Attributes']['Token'];
if($device_token == $endpoint_device_token){
if($enable == true){
$content = array(
'TargetArn' => $endpointArn,
'MessageStructure' => 'json',
'Message' => json_encode(array(
'APNS' => json_encode(array(
'aps' => array(
'alert' => $alert,
'sound' => 'default',
'badge' => 1
),
//カスタム可能
'transition_index' => 3,//1:Atab 2:Btab 3:Ctab 4:Dtabへの遷移に適宜カスタムする。
))
))
);
try{
$sns->publish($content);
//return true;
}catch (Exception $e){
print($e->getMessage());
}
}elseif($enable == false){
echo 'bud';
}
}
}
return 0;
}
DBにはユーザーIDが3と6のデバイストークンは保存されていて、
片方(ID3のユーザー)にPush通知を送ることはできていますが、
もう片方に送信できません。
ダッシュボードで確認すると送信できていない方のトークンの"enable"が"false"になってしまっていました。
一時的に"enable"を"false"にしても、再度Pushを試すと元に戻ってPushも送れていない状態になってしまいます。
なにかありましたら、随時補足させていただきますので、
よろしくお願い致します。
参考サイト
http://noumenon-th.net/webstrategy/2015/06/09/amazonsns/