5

Apple ガイドによると:

iOS を実行しているデバイスでアプリケーション アイコンがタップされた場合、アプリケーションは同じメソッドを呼び出しますが、通知に関する情報は提供しません。アプリケーションのアイコンが実行されているコンピューターでクリックされた場合

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html#//apple_ref/doc/uid/TP40008194

私の知る限り、アプリのアイコンがタップされたときの通知を検出できないようです。

そのため、プログラムで通知センターを取得しようとしましたが、それも不可能のようです。

プログラムで通知センターを取得することは不可能ですか?

私がやりたいのは、アプリケーションがバックグラウンドにある場合でも、通知が受信されたかどうかを検出することです。

4

2 に答える 2

6

プログラムで通知センターを取得することは不可能ですか?

いいえ、パブリック 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);
}
于 2013-10-07T02:15:30.540 に答える
0

iOS 7 では、これを行う方法があります。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler

次に、通知を処理するためにアプリで必要なことをすべて実行し、電話で受信したことを登録してください。

プッシュ通知が到着すると、システムはユーザーに通知を表示し、必要に応じてバックグラウンドでアプリを起動して、このメソッドを呼び出せるようにします。このメソッドを使用して、プッシュ通知に関連するデータをダウンロードします。メソッドが完了したら、handler パラメーターでブロックを呼び出します。

ここにあります

于 2013-10-07T02:15:20.100 に答える