jarinosuke blog

about software engineering, mostly about iOS

Push 通知内の Payload の内容を起動時にデバッグする

Payload

Push 通知には Payload と呼ばれるデータ領域があり、

そこにはシステムがユーザの警告するためのデータや、別用途で用いるためのカスタムデータなどが入っています。

iOS 側での実装

対象のアプリケーションが起動していない状態で、Notification Center 内の通知をタップするなどして起動すると、

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

が走り、launchOptions の中に Push 通知内の Payload のデータが入っているというわけです。

そのデータは以下の様にして取得する事ができます。

launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]

デバッグが困難

では実際に Payload 内におかしなデータが入っている可能性があり、

その内容をみながらデバッガを使ってデバッグしたいという場合があるとします。

しかし、

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

はアプリケーションの起動してすぐに走ってしまうので Xcode でビルドした時に呼ばれてしまい、

起動中に Push 通知を受け取った場合は以下の別のメソッドが呼ばれてしまうのです。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

解決策

長々と書いてきましたが、以下の様にして簡単に解決出来ます。

Edit Scheme から対象の Scheme を選び、

Info タブの Launch トグルを Automatically から Wait for ~ to be launched menu に変えるだけです。

f:id:jarinosuke0808:20140618181624p:plain

こうすることでアプリが実際に指などで起動されるまでデバッガが起動しなくなります。

早川製菓 ふなっしー 梨汁ブシャーキャンディ 80g×6袋

早川製菓 ふなっしー 梨汁ブシャーキャンディ 80g×6袋