0

以下に問題があります。

  • ホームボタンを押してアプリをバックグラウンドに最小化すると、5 分ごとにポップアップのローカル通知が作成されます。
  • バックグラウンドからアプリを削除します。-->私の予想される子犬は、アプリが存在する場合にのみ表示され、アプリをバックグラウンドから削除すると破棄されます。

ローカル通知がまだアクティブで、バックグラウンドから削除した後も5分ごとにポップアップが表示されるという私の問題。

どうすればそれを止めることができますか? 私を助けてください!ありがとうございます。

4

2 に答える 2

2

これをアプリケーションデリゲートに入れます。アプリケーションがバックグラウンドに入ると、すべてのローカル通知が削除されます。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
}
于 2012-07-23T07:34:13.050 に答える
1

すべての通知をキャンセルしたくない場合... 通知の userInfo 辞書に格納されている一意の識別子を設定しました。削除したいときは、すべての通知をすばやく列挙し、削除する正しい通知を選択します。

ここでの障害は、通知用に作成した UUID を保存することを忘れないことと、高速列挙で isEqualToString を使用することを忘れないことでした。一意の識別子の代わりに特定の名前文字列を使用することもできたと思います。高速列挙よりも優れた方法を誰かが教えてくれる場合は、お知らせください。

@interface myApp () {
    NSString *storedUUIDString; 
}

- (void)viewDidLoad {
    // create a unique identifier - place this anywhere but don't forget it! You need it to identify the local notification later
    storedUUIDString = [self createUUID]; // see method lower down
}

// Create the local notification
- (void)createLocalNotification {
    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    if (localNotif == nil) return;
    localNotif.fireDate = [self.timerPrototype fireDate];
    localNotif.timeZone = [NSTimeZone defaultTimeZone];
    localNotif.alertBody = @"Hello world";
    localNotif.alertAction = @"View"; // Set the action button
    localNotif.soundName = UILocalNotificationDefaultSoundName;
    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:storedUUIDString forKey:@"UUID"];
    localNotif.userInfo = infoDict;

    // Schedule the notification and start the timer
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 
}

// Delete the specific local notification
- (void) deleteLocalNotification { 
// Fast enumerate to pick out the local notification with the correct UUID
    for (UILocalNotification *localNotification in [[UIApplication sharedApplication] scheduledLocalNotifications]) {        
    if ([[localNotification.userInfo valueForKey:@"UUID"] isEqualToString: storedUUIDString]) {
        [[UIApplication sharedApplication] cancelLocalNotification:localNotification] ; // delete the notification from the system            
        }
    }
}

// Create a unique identifier to allow the local notification to be identified
- (NSString *)createUUID {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return (__bridge NSString *)string;
}

上記のほとんどは、おそらく過去 6 か月間に StackOverflow から削除されたものです。お役に立てれば

于 2012-07-23T08:48:30.530 に答える