スキップしてメイン コンテンツに移動

投稿

4月, 2012の投稿を表示しています

AIR for iOSでAPNsをサポートするためのTips

【追記】AIR 3.4から正式にAPNsによるPush Notificationがサポートされました。この記事で紹介しているやり方だと恐らく不具合が生じる可能性がありますので標準のAPIを使うようにしてください。詳しくはプッシュ通知の使用を見てください。

AIRのアプリでAPNsをサポートする必要があったのでANEで実装してみました。
既に実装した人はいるようなのですが(参考)ソースがなかったので自作しました。

iOSアプリでAPNsを使うには大雑把に以下の実装が必要です。
UIApplicationのregisterForRemoteNotificationTypes:メソッドを呼び出す。端末をAPNsに登録しますAppDelegateに以下のメソッドを実装application:didRegisterForRemoteNotificationsWithDeviceToken: APNsの登録に成功した場合の処理application:didFailToRegisterForRemoteNotificationsWithError: APNsの登録に失敗した場合の処理application:didFinishLaunchingWithOptions: Remote通知に含まれる情報を読み取ります(アプリ起動時)application:didReceiveRemoteNotification: Remote通知に含まれる情報を読み取ります(アプリ起動中)

これをANEで実装する場合、いろいろ試して下のような形で実装できました。

UIApplicationのregisterForRemoteNotificationTypes: メソッドを呼び出す
普通にANEの関数内で呼び出します。UIApplicationのインスタンスは[UIApplication sharedApplication]で取れます。UIApplicationはSingletonのようです。

UIApplicationDelegateにPush関連のメソッドを実装
こいつが結構くせ者でしてAIRのRuntimeが既にDelegateを実装してしまっているのでむやみに取り替えられません。また、ソースもありません。

いろいろ調べた結果以下のような方法を採りました。
適当なクラスのload()…