3

繰り返しのない通知をスケジュールし、通知センターからの特定の通知を削除できるように見える3do アプリを試しました。これは次のように機能します: アプリがバックグラウンドにある場合、それらは通知センターに配信されます。これらの通知のいずれかを選択すると、3do が開き、「完了」をタップするオプションが表示されます。「完了」をタップすると、その特定の通知が削除されます。通知センターから。何もタップしないと、通知は通知センターに残ります。

これは、自分のアプリケーションの 1 つで私自身が抱えている問題です。通知センターから個々の通知を削除する方法がわかりません。通知に繰り返し間隔がない場合、scheduledLocalNotificationsUIApplication の配列は空になるため、その特定の通知をキャンセルして通知センターから削除することはできません。ただし、通知に繰り返し間隔がある場合、scheduledLocalNotifications 配列は空にならず、この通知を削除できます。しかし、通知が繰り返されない場合、どのようにシナリオに対処できますか?

4

2 に答える 2

10

scheduledLocalNotifications array will show as empty even if you have set local notifications. 最善の方法は、個々のローカル通知オブジェクトを保持することです。簡単に削除できますので。

ローカル通知を設定するときは、このようにオブジェクトを保存します

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

NSString *userDefKey =  @"key";
NSData *dataEnc = [NSKeyedArchiver archivedDataWithRootObject:localNotification];
[[NSUserDefaults standardUserDefaults] setObject:dataEnc forKey:userDefKey];

鍵は預けるべき

特定のローカル通知を削除したい場合

if([[NSUserDefaults standardUserDefaults] objectForKey:userDefKey]){

    NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:userDefKey];
    UILocalNotification *localNotif = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    [[UIApplication sharedApplication] cancelLocalNotification:localNotif];

}
于 2013-01-08T12:58:05.947 に答える
1

ハリクリシュナンは私を正しい軌道に乗せましたが、実際には、これにはもっと簡単な解決策があると思います。

には- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification、通知センターでタップされた通知への参照があります。したがって、次のことができます。

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {

    // This removes the notification from notification center
    [[UIApplication sharedApplication] cancelLocalNotification:notification];
}
于 2013-01-08T13:20:48.263 に答える