メモ > 技術 > サービス: 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プログラムにアクセスして、アプリにプッシュが届くことを確認する