最終ゴール
- ApplePushNotificationを使ってサーバからクライアントにプッシュ通知を送りたい
今回のゴール
- クライアント側でユーザにプッシュ通知の許可をもらうダイアログを出す
- クライアントを一意に決定するトークンを取得する
記録
とりま資料を見る
-(void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)options { UIRemoteNotificationType myTypes = UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge; [application registerForRemoteNotificationTypes:myTypes]; }
UIApplication
のprivateなメソッドにdidFinishLaunchingWithOptions
というものがあるっぽい- 名前的に、アプリの起動が終わった瞬間に呼ばれるっぽい?
Options
って何やねん感ございますね
_人人人人人人人人人人人人人人人人人人人人人人_
> そもそも、ViewControllerしか触ったこと無い <
 ̄^ Y ^ Y ^ Y ^ Y ^ Y ^ Y ^ Y ^ Y ^ Y ^ Y ^ Y ^ Y ^  ̄
UIApplication didFinishLaunching(以下略)を実装
どこにあんのこれ
% cd ~/proj/iOS/iApnSample % rak didFinishLaunchingWithOptions iApnSample/IHogeAppDelegate.m 13|- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions %
把握。
こんな感じで書いた
ダイアログ出ないでござる
とりあえずRunするも
ログ出てるし通ってると思うんだけどな。
あー把握。ドキュメントもちゃんと読み進めると「callback定義してね」と書いてあるので
ということでdidFinishLaunchingWithOptions
のすぐ下にこれを書いた
満を持して再びRun!
失敗するがな...
右下で失敗してることがわかる
こういうときは落ち着いてエラーメッセージを読むに限る
2014-07-31 22:37:47.630 ApnSample[43565:60b] Error Domain=NSCocoaErrorDomain Code=3010 "remote notifications are not supported in the simulator" UserInfo=0x8d61560 {NSLocalizedDescription=remote notifications are not supported in the simulator}
remote notifications are not supported in the simulator
「シミュレータではリモート通知サポートしてねえょ馬鹿かおととい来やがれ」とのこと。ヒドイ。そこまで言わなくてもいいじゃない...。
まあ確かに、ここで取れるはずのトークンはデバイスのユニークな識別子なはずだから、シミュレータで取れるはず無いか。
実機でやりゃあいいんでしょ
わかりましたよやりますよやりゃいいんでしょ、ということでビルドターゲットを
otiai10's iPhoneにして、再びRun
Appの有効な“aps-environment”エンタイトルメント文字列が見つかりません
ハァ?しばくぞ?ん?
- [エラー]Appの有効な“aps-environment”エンタイトルメント文字列が見つかりません:iOS開発ブログ:So-netブログ
- App の有効な "aps-environment" エンタイトルメント文字列が見つかりません « 水色のドア
- Appの有効なaps-environmentエンタイトルメント文字列が見つかりません: アプリ開発
なるほど
developer.apple.comでやること
- Push Notificationを有効にしたいApplication ID をつくる
- 上記Application IDに向けたProvisioning Profile をつくる
- https://developer.apple.com/account/ios/profile/profileList.action
- ここ行って、追加[+]ボタン押す
- 出来たらダウンロード&展開してiPhone構成ユーティリティにぶち込んどく
Xcodeでやること
- 設定のinfoでBundle Identifierを明記する
- 設定のBuild SettingsのCode Settingsで、利用するProvisioning Profileを明示する
これでどや!?
実機に向けてRunする
よしきた![OK]を選択すると...
トークン取れてる感ある
雑感
developer.apple.comとかitunesconnect.apple.comとかよく分からなくて苦手意識あったけど、徹底的に知ってる人に聞いて、自分でもたくさん触れて、とりあえず慣れていけば、どうにかならんこともないな、という印象。
DRYな備忘録