2016-07-20 5 views
0

私のアプリにはいくつかの通知があります。私がしたいことは、ローカルの通知が到着したときに、通知センターからすでに表示されている別のものを消去することです。シングルUILocalNotificationをキャンセルする

私は次のコードを使用しています。

static func unscheduleNotification(userInfoValue: String){ 
    if let notifications = UIApplication.sharedApplication().scheduledLocalNotifications{ 
     for notification in notifications{ 
      if let userInfo = notification.userInfo as? [String:String]{ 
       if userInfo["info"] == userInfoValue{ 
        UIApplication.sharedApplication().cancelLocalNotification(notification)       
       } 
      } 
     } 
    } 
} 

ここで正しい方向を指摘していただければ幸いです。それが可能であれば。

+0

obj-cのリンクを参照してください。http://stackoverflow.com/questions/9232490/how-do-i-create-and-cancel-unique-uilocalnotification-from-a-custom-class –

+0

それは私です私のコードから見ることができますが、それは動作していません。何らかの理由で。 –

+0

私はcancelAllNotificationメソッドを使用する場合、期待どおりに動作します。 –

答えて

0

解決策が見つかりました。または1つの解決策。通知に1つの繰り返し間隔を追加すると、私が使用していた方法で質問を投稿して削除することができます。

正しい手順であるかどうかはわかりませんが、実際には動作しています。

0

別の1を取得するときに1つの通知を受け取りたい場合は、NSUserDefaultに1番目の通知オブジェクトを保存することをお勧めします。別の1つの通知を受け取ると、すでに格納されている通知をNSUserDefaultからフェッチして削除します。

最初の通知を受け取った後でデバイスを再起動する場合の例を考えてみましょう。通知トレイに表示されますが、キャンセルするオブジェクトは表示されません。

scheduledLocalNotificationsまた、デバイスの修理後にオブジェクトを提供することはありません。 scheduledLocalNotificationsは、iOS 8

で正しく常に動作しません参照してください - iOS 8 [UIApplication sharedApplication].scheduledLocalNotifications empty

あなたはNSUserDefaultから取得した時点でのNSData

let data = NSKeyedArchiver.archivedDataWithRootObject(notificationObject) 

に通知オブジェクトを変換する必要がありNSUserDefaultに保存することになるが

をオブジェクトに変換だから、再びNSDataの

こと210

+0

ヘルプがあれば回答を受け入れることができます。 – Hasya

関連する問題