2017-01-20 8 views
0

私は自分のアプリでUserNotificationを実装しています。通知が発生すると2つのアクションが表示され、1つはスヌーズ効果を追加したい場合は5分後に再びスヌーズする必要があります。どのようにそれを処理するには?全てに感謝 !誰かが考えている場合に助けてください通知がios 10で配信された後にスヌーズ効果を追加する方法

+0

どのようにスヌーズボタンを追加するのですか。通知からまたは通知開始後に通知が配信されたとき –

+0

私はAlertControllerで2つのアクションを処理します。1.)閉じる2.)スヌーズ – kishan

答えて

2

iOS10の場合、このコードを使用してください。

AppDelegate.swiftファイルでこのコードを使用してください。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { 

    let center = UNUserNotificationCenter.current() 
    let category = UNNotificationCategory(identifier: "identifier", actions: [], intentIdentifiers: []) 
    center.setNotificationCategories([category]) 
    center.requestAuthorization(options: [.badge, .alert , .sound]) { (greanted, error) in 
      print(error) 
    } 
    return true 
} 

このコードは任意のビューコントローラに配置できます。

let content = UNMutableNotificationContent.init() 
content.title = "Notification Title" 
content.subtitle = "Notification Sub-Title" 
content.body = "Notification Body" 
content.sound = UNNotificationSound.default() 

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false) 

let request = UNNotificationRequest(identifier: "identifier", content: content, trigger: trigger) 

UNUserNotificationCenter.current().add(request) { error in 
    UNUserNotificationCenter.current().delegate = self 
    if (error != nil){ 
     //handle here 
    } 
} 

次の方法を使用して通知を処理することができます:

extension UIViewController: UNUserNotificationCenterDelegate { 

    public func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Swift.Void) { 
     completionHandler([.alert, .badge, .sound]) 
    } 

    public func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Swift.Void) { 
     print("Tapped in notification") 
    } 
} 

は、あなたが参照してExampleとしてこのBlogを使用することができます。

1

あなたは現在の通知と同じ詳細で別の通知を作成し、火災の日付を5分増やすことができます。ここで

は、私が使用するコードです:

func snoozeScheduledNotification(notification:UILocalNotification) -> Void { 
    // Snooze for 10 mins 
    let localNotification = UILocalNotification() 
    localNotification.fireDate = notification.fireDate?.addingTimeInterval(60*10) 
    localNotification.repeatInterval = NSCalendar.Unit(rawValue: 0) // 0 = No Repeat 
    localNotification.alertBody = notification.alertBody 
    localNotification.soundName = notification.soundName 
    localNotification.userInfo = notification.userInfo 
    localNotification.category = notification.category 
    UIApplication.shared.scheduleLocalNotification(localNotification) 
} 

は、それはあなたのお役に立てば幸いです。

+0

スケジュールを設定したいUserNotification FrameworkをiOS 10でのみ使用する – kishan

関連する問題