2012年01月21日

iOSのPush Notification @ iPod touch

ちょっと填ったので、忘れないようにメモして置きます。

結論から書くと、iOSのPush Notificationをレンタルサーバーでやろうとした事が良くなかったみたいです。開発環境のMacでやると無事出来ました。

面倒な点としては、証明書を用意しなければ成らない事。Googleで検索すると幾つか方法が書かれてあるサイトがありましたが、何故か面倒なやり方になっていて、それらを真似たら上手く行かず、結局はAppleのPDF「Local NotificationおよびPush Notificationプログラミングガイド」に書かれてある方法が分かりやすかったです。特に重要なところは、キーチェーンアクセスから書き出す時の「証明書と鍵の両方を選択して」って所ですね。この部分が他の資料では書かれてなかったり、方法が違っていたりしてその後の手順が面倒になってました。結局はAppleのドキュメントが一番って事ですね。

それから、Mac以外で構築する場合、ルート証明書って奴が必要みたいで、これがファイルを置いただけだとダメなのかな。証明書関係はイマイチよく分かってないので、自分には出来ませんでした。hetemlで出来る様に成れば嬉しいんだけどな。教えて偉い人。

追記:
何処かに資料があるのかも知れませんが、文字数制限に関して。

送信可能文字数:201(日本語の場合 33)
待ち受け画面のアラート表示:108
待ち受け画面上の一覧表示:144
ホーム画面の上のアラート表示:41
ホーム画面表示上の一覧表示:152

送信可能文字数に関してはペイロードに含むモノによっては違いますが、上記の数字は「iPhoneアプリ開発 熟達テクニック」のサンプルを実際に動かして試した場合です。

追記2:
上記の日本語の場合の文字数が少なくなっている問題が分かりました。サンプルで ペイロードの文字列作成で json_encode() が使われているのですが、このままだと、日本語の文字列がユニコードエスケープシーケンスと成ってしまい、その分だけ文字列が長くなり、送れる文字数が少なくなると言う事のようです。

実際、他のアプリのAPNSの通知を見ていると、日本語が33文字なんて事は無くもっと長く、alertに入れている文字列はもっと長いです。おそらく、JSONを作る時にユニコードエスケープシーケンスしてないか、json_encode()した結果からエスケープしてない形に戻しているのかなと言う気がします。そもそも、json_encode()のオプションでエスケープしないように出来るかなと思って試したのですが、どうも上手く行かなかったので、不本意ですが、エスケープしてない形に戻す形で実験しました。効率からすると、この程度だったら、json_encode()を使わない方が良いかも。

ちなみに実際にやった方法は、

$payload = unicode_encode(json_encode($payloadDict));

こんな感じで、unicode_encode() は下記のサイトから頂いてきました。

PHPでユニコードエスケープ(unicode_encode, unicode_decode代替) - はて日記
>>関連リンク

と言うわけで、日本語の文字数で再度調べたデータを書いておきます。但し上記と条件が違っていて、書籍の記述にあったアプリ独自の記述は外し、alertのメッセージ文と"sound":"default"だけの記述にしています。

送信可能文字数:72
待ち受け画面のアラート表示:59
待ち受け画面上の一覧表示:制限まで届かず(スペース的には80)
ホーム画面の上のアラート表示:22
ホーム画面表示上の一覧表示:制限まで届かず(スペース的には84)

一覧表示時は何れも表示エリア目一杯まで届かず、"sound":"default"を外した場合も、日本語(Unicode)で6文字分にしかならないので、表示上の制限を気にする必要は無さそうです。それよりも、アラート表示の時の文字数が、特にホーム画面上の場合は、22文字しか入らないので、内容によっては文字数を気にした方が良さそうです。

閲覧数: 9360 / はてなブックマークusers

関連商品

amazon.co.jp・詳細ページへ

blog comments powered by Disqus

関連日記

アマゾン広告

この日記ページは閲覧数などの条件に応じて、閲覧制限を行っています。他からリンクしていただいても、そのリンクから辿った閲覧者が当ページの内容をご覧頂けない場合があります。ご了承下さい。

▼日記検索

Mac

Shade

3D

Flash

ゲーム

ウェブ

音楽

映画

デジカメ

Windows

Linux

携帯電話

テレビ

広島

電子工作

iOS

▼ 最近のトラックバック

▼ランキング

▼関連サイト