Memo

メモ > 技術 > サービス: AmazonSNS > iOS: アプリにPHPからPushを送信

■iOS: アプリにPHPからPushを送信
※ApnsPHPでは「旧式のバイナリインターフェイス」を利用しているが、これは2020年11月以降使えなくなる 今後はHTTP/2ベースの仕組みに移行する必要がある 詳細は、このファイル内の「iOS: アプリにPHPからPushを送信(HTTP/2版)」を参照 ■ApnsPHPのインストール ApnsPHP https://github.com/immobiliare/ApnsPHP 証明書類(pem形式)が2つ必要 ・PUSH証明書(と鍵)を含むpemファイル ・APNsのサーバを検証するためのルート証明書 ■サーバルート証明書の入手 Entrustのサーバルート証明書は以下からダウンロードする (なお、今回ダウンロードした証明書は、7/24/2029まで有効) Entrust.net Certificate Authority (2048) https://www.entrustdatacard.com/pages/root-certificates-download https://entrust.com/root-certificates/entrust_2048_ca.cer ■pemファイルの作成 opensslコマンドの使える環境で、作成した Push-Test1-Dev.p12 をpem形式に変換する パスワードの入力を求められるが、p12ファイルをパスワードなしで作成した場合、パスワードは空欄のままEnterでいい $ openssl pkcs12 -in Push-Test1-Dev.p12 -out server_certificates_bundle_sandbox.pem -nodes -clcerts Enter Import Password: MAC verified OK このファイルとデバイストークンを使って、直接プッシュを送信できる ■プログラムの作成 ※ファイルの文字コードは UTF-8N にする
<?php require_once 'ApnsPHP/Autoload.php'; // pemファイル $push = new ApnsPHP_Push( ApnsPHP_Abstract::ENVIRONMENT_SANDBOX, 'server_certificates_bundle_sandbox.pem' ); // サーバルート証明書 $push->setRootCertificationAuthority('entrust_2048_ca.cer'); // Apple Push Notification Service に接続 $push->connect(); // プッシュ送信先のデバイストークン $message = new ApnsPHP_Message('f7b8b8ade018f18e8b0dd9e34cfd1764575941243e21d9b47a6d3a3ad62d277b'); // バッジに表示する数字 $message->setBadge(2); // プッシュの送信メッセージ $message->setText('これはプッシュ送信のテストです。'); // サウンドを再生 $message->setSound(); // カスタムプロパティ $message->setCustomProperty('test1', array('aaa', 'bbb')); $message->setCustomProperty('test2', array('ccc', 'ddd')); // Set the expiry value to 30 seconds $message->setExpiry(30); // メッセージを送信 $push->add($message); $push->send(); // Apple Push Notification Service との接続を終了 $push->disconnect(); // エラーメッセージを確認 $errorQueue = $push->getErrors(); if (empty($errorQueue)) { echo 'OK'; } else { var_dump($errorQueue); }
■動作確認 作成したPHPプログラムにアクセスして、アプリにプッシュが届くことを確認する

Advertisement