3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

まえがき

タイトルの通りです。

タイトルつき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`)
くやしいのでここに書いときます・・・・(-_-;)

3
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?