プログラムで通知センターを取得することは不可能ですか?
いいえ、パブリック API では不可能です。
通知センターは 2 つの分離されたエンティティであるため、アプリは通知センターの現在の状態にとらわれません。
とにかく、AdamGが指摘したように、iOS 7では実装できます
application:didReceiveRemoteNotification:fetchCompletionHandler:
documentationによると、これはアプリの状態に関係なく呼び出されます(実行されていない場合やバックグラウンドであっても)。
remote-notification
使用するには、バックグラウンド モードをサポートする必要があります。方法は次のとおりです。
Xcode 5 以降では、アプリがサポートするバックグラウンド モードをプロジェクト設定の [機能] タブから宣言します。Background Modes オプションを有効にすると、UIBackgroundModes キーがアプリの Info.plist ファイルに追加されます。1 つ以上のチェックボックスを選択すると、対応するバックグラウンド モードの値がそのキーに追加されます。
プログラムから通知センターにアクセスすることはまだできませんが、通知を追跡することはできます。
モック化された実装は次のようになります。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
// Hey we got a notification!
// Now we have 30 seconds to do whatever we like...
// ...and then we have to call the completion handler
completionHandler(UIBackgroundFetchResultNoData);
}