1. ホーム
  2. objective-c

[解決済み] 特定のローカル通知を削除する

2023-02-24 05:29:27

質問

ローカル通知によるiPhoneアラームアプリを開発しています。

アラームを削除すると、関連するローカル通知がキャンセルされるはずです。しかし、ローカル通知の配列からどのオブジェクトがキャンセルされるかを正確に判断するにはどうしたらよいでしょうか。

私が知っているのは [[UIApplication sharedApplication] cancelLocalNotification:notification] メソッドは知っていますが、この「通知」をキャンセルさせるにはどうしたらいいでしょうか?

どのように解決するのですか?

ローカル通知のuserinfoにkeyのためのユニークな値を保存することができます。 すべてのローカル通知を取得し、配列を通してループし、特定の通知を削除します。

以下のようなコードです。

OBJ-Cです。

UIApplication *app = [UIApplication sharedApplication];
NSArray *eventArray = [app scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
    UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
    NSDictionary *userInfoCurrent = oneEvent.userInfo;
    NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"uid"]];
    if ([uid isEqualToString:uidtodelete])
    {
        //Cancelling local notification
        [app cancelLocalNotification:oneEvent];
        break;
    }
}

SWIFTです。

var app:UIApplication = UIApplication.sharedApplication()
for oneEvent in app.scheduledLocalNotifications {
    var notification = oneEvent as UILocalNotification
    let userInfoCurrent = notification.userInfo! as [String:AnyObject]
    let uid = userInfoCurrent["uid"]! as String
    if uid == uidtodelete {
        //Cancelling local notification
        app.cancelLocalNotification(notification)
        break;
    }
}

UserNotificationです。

もしあなたが ユーザー通知 (iOS 10+)を使用している場合は、以下の手順に従ってください。

  1. UserNotificationのコンテンツを作成する際に、ユニークな の識別子を追加します。

  2. 特定の保留中の通知を削除するには removePendingNotificationRequests(withIdentifiers:)を使って削除します。

  3. 特定の配信済み通知を削除するには removeDeliveredNotifications(withIdentifiers:)を使って削除します。

詳細はこちら UNUserNotificationCenter