Posted at

ApnsPHPでタイトルつきPush通知を送るよ

More than 1 year has passed since last update.


まえがき

タイトルの通りです。

タイトルつきPush通知は、どうもiOS8.2あたりから送信可能となったようです。

そもそも久しぶりにPush通知送信処理を書くことになったので、

どうしたものかと軽く悩んでみたのですが、大丈夫、ちゃんとApnsPHPが対応していました。

ApnsPHPえらい

ApnsPHPすごい

・・・・というための記事です。


実装

通常のメッセージのみを送信する処理はサンプルにあるとおりで、

ApnsPHP_Messageを使用します。

タイトルつきの通知を送信する場合は、ApnsPHPに用意されているApnsPHP_Message_Customを使用します。

ApnsPHP_Message_Customは名前の通りApnsPHP_Messageの改良版で、タイトルの対応がされています。

なので、そのまま処理を増やせば大丈夫。

$apns_message = new ApnsPHP_Message_Custom($user_device_token);

$apns_message->setExpiry($expire);
$apns_message->setText($message);
$apns_message->setBadge($badge);
$apns_message->setTitle($title); // ←NEW

別段特殊なことはしていないので、送信の実処理はサンプル見てどうぞ。


あとがき

内容がうっすいけど、まぁそんなもんで。。

しかし、ApnsPHP、自分が最初に触ったのは5年くらい前のはずなんですが、

まだ同じライブラリが、それもちゃん新機能に対応されて利用できるというのはちょっと嬉しいですね(^^)


おまけ

そんなApnsPHPですが、どうも2017/12に対応されたようなのでもう不要みたいですが、

自分が使用したソースではデバイストークンの桁数増加には対応されていませんでした。

なので、継承したクラスを用意して対応しています。

/**

* デバイストークンの桁数が変更となったため対応
* タイトルのため、\ApnsPHP_Messageではなく\ApnsPHP_Message_Customを継承
*/

class My_ApnsPHP_Message extends ApnsPHP_Message_Custom
{
/**
* 桁数を32bytes(16進数で64文字)から100bytes(16進数で200文字)に変更
*
* @param $sDeviceToken @type string Recipients device token.
* @throws ApnsPHP_Message_Exception if the device token
* is not well formed.
*/

public function addRecipient($sDeviceToken)
{
if (!preg_match('~^[a-f0-9]{64,200}$~i', $sDeviceToken)) {
throw new ApnsPHP_Message_Exception(
"Invalid device token '{$sDeviceToken}'"
);
}
$this->_aDeviceTokens[] = $sDeviceToken;
}
}

あと1ヶ月はやければ↑の対応いらなかったなぁ・・・・運が悪かったか。。('A`)

くやしいのでここに書いときます・・・・(-_-;)