[解決済み] iOSアプリ:通知を消去するには?
質問
iOS アプリケーションで、いくつかの Push 通知を送信しています。問題は、メッセージや通知がタップされた後、iOS の通知センターに残ってしまうことです。次にアプリケーションを開いたときに、通知センターで私のアプリケーションの通知を削除するにはどうしたらよいでしょうか。
私は、人々が以下を呼び出している投稿に出会いました。
setApplicationIconBadgeNumber
をゼロ値で呼び出して、通知をクリアしている投稿を見つけました。それは私には非常に奇妙に思えるので、たぶん別の解決策が存在すると信じています。
EDIT1です。
通知をクリアするのに少し問題があります。私のコードはこちらをご覧ください。
- (void) clearNotifications {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (launchOptions != nil)
{
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
NSLog(@"Launched from push notification: %@", dictionary);
[self clearNotifications];
}
}
return YES;
}
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
NSLog(@"Received notification: %@", userInfo);
[self clearNotifications];
}
Xcodeでアプリを動かしています。アプリを最小化し、通知センターの通知を使ってアプリを起動すると、ログにあるように
didReceiveRemoteNotification
が呼び出され、ブレイクポイントを使用すると
clearNotifications
が実行されたことを確認できます。しかし、まだ通知は通知センターでハングアップしています。なぜでしょうか?
どのように解決するのですか?
おそらく、通知センターは比較的新しい機能であるため、Apple は、通知を消去するためのまったく新しいパラダイムを必ずしもプッシュしたくはなかったのでしょう。そのため、代わりに
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
を複数回使用して、通知を消去するようにしました。これは少し奇妙に思えるかもしれませんし、Apple は将来、これを行うより直感的な方法を提供するかもしれませんが、当面はこれが正式な方法です。
私自身は、このスニペットを使用しています。
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
は、通知センターからアプリのすべての通知を消去することに失敗することはありません。
関連
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み】アプリをフォアグラウンドにした状態でプッシュ通知を受ける iOS
-
[解決済み] 現在の日付から7日分を差し引いた日数
-
[解決済み] Objective-Cのセレクタ?
-
[解決済み] ARCで__autoreleasing ownership修飾子を記述する必要があるのは、どのような場合ですか?
-
[解決済み] Swiftでクラスをプロトコルに準拠させるには?
-
[解決済み] switch文の中で変数を宣言する [重複]。
-
[解決済み] NSDictionaryにboolean値を追加するにはどうすればよいですか?
-
[解決済み] Objective-Cのプロテクトメソッド
-
[解決済み] Objective-CでQueueを作成し、使用するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 角括弧 < > と引用符 " " を使って #import する。
-
[解決済み] Xcodeはクラッシュの原因となる行を表示しない
-
[解決済み] 複数のサブクラスで1つのストーリーボードuiviewcontrollerを使用する方法
-
[解決済み] iOSの合成されたプロパティの名前を、先頭のアンダースコアで変更するのはなぜですか?重複
-
[解決済み] NSObject +loadと+initialize - これらは何をするのですか?
-
[解決済み] Swiftでクラスをプロトコルに準拠させるには?
-
[解決済み] NSURLをローカルファイルのパスに変換する
-
[解決済み] ブロックベースのAPIメソッドでnonnullとnullableのObjective-Cキーワードを使用する方法
-
[解決済み] Swift の外部読み取り専用、内部読み書き可能なプロパティ
-
[解決済み] iOS - プログラムでUISwitchを設定する方法