最終ゴール
- ApplePushNotificationを使ってサーバからクライアントにプッシュ通知を送りたい
今回のゴール
- クライアント側で得たデバイストークンに向けて
- とりあえずcliとか叩いて通知してみるだけ
- サーバアプリケーションは作らない
前回
これでやってみたけれどうまくいかず、いろんな人に相談しました。今回これが達成できたのでそのまとめです。
記録
そのProvisioningあってる?
> これってクライアント側のprovisioningプロファイルはproductionのほういれてるんだよね? http://otiai10.hatenablog.com/entry/2014/08/03/181839
> クライアント側のprovisioningって、developer.apple.comでアプリ追加するときのやつですか?
これだ!!しかしこれなんでInvalidになってるん?
Provisioningから作り直す
- App ID の "ApnSample" のNotificationが有効でなかったので
Edit
する- Certificatesを求められるので注意深く
Development
を選択する
- Certificatesを求められるので注意深く
- Provisioning Profileも注意深く
Development
を選択して作り直す - あとはここに沿ってpemファイル(develop用)をつくる
minimum.rb
require 'houston' APN = Houston::Client.development APN.certificate = File.read("pushcert.pem") # 上記手順でつくったpemファイル token = "<xxxxxxxx xxxxxxx>" # http://otiai10.hatenablog.com/entry/2014/08/01/004941 # ここで手に入れたdevice token notification = Houston::Notification.new(device: token) notification.alert = "田井中律は俺の嫁!" notification.badge = 821 notification.content_available = true notification.custom_data = {foo: "bar"} APN.push(notification)
いざ実行
% ruby minimum.rb %
キタ──ヽ('∀')ノ──!!
雑感
- なんか色々申請書類あるけど
- DevelopならDevelop(あるいはsandboxと表記されてるかもしれない)
- ProductionならProduction(あるいはdistributionと表記されてるかもしれない)
- で、注意深く一致させてつくったり提出したりしましょう
- やっぱり手続き的なところ分からんことは人に聞くのが一番早いです
- 回転寿司はいらないと言われました...
DRYな備忘録
追記
これGoでやりたいわけ、と思って探したらあるやん https://github.com/anachronistic/apns
README抜粋
package main import ( "fmt" apns "github.com/anachronistic/apns" ) func main() { payload := apns.NewPayload() payload.Alert = "Hello, world!" payload.Badge = 42 payload.Sound = "bingbong.aiff" pn := apns.NewPushNotification() pn.AddPayload(payload) alert, _ := pn.PayloadString() fmt.Println(alert) }
よさそう(小並感