4

iOS 10 では、 UNNotificationPresentationOptionsを使用して、アプリがフォアグラウンドにあるときに通知を表示するオプションがあります。

しかし、これを使用する方法のサンプルが見つかりませんでした。この機能を実装する方法についていくつかのアイデアを提案してください

4

2 に答える 2

10

フォアグラウンド通知を実装しました

私のviewControllerに以下のコードを追加する

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("Do what ever you want")

    }

}

didFinishLaunchingWithOptions の私の Appdelegate で

UNUserNotificationCenter.current().requestAuthorization(options: [.alert,.sound]) {(accepted, error) in

            if !accepted {   
                print("Notification access denied")
            }            
        }
于 2016-10-05T08:45:46.520 に答える
0

新しい iOS 10 UNUserNotificationCenterDelegateには、リモート通知とローカル通知の両方を処理する単一のメソッド セットが含まれるようになりました。

UNUserNotificationCenterDelegateプロトコル:

userNotificationCenter(_:didReceive:withCompletionHandler:)

特定の通知に対してユーザーが選択したアクションをアプリに知らせるために呼び出されます。

userNotificationCenter(_:willPresent:withCompletionHandler:)

フォアグラウンドで実行されているアプリに通知を配信します。

2 つの方法。さらに優れているのは、それらが独自のプロトコルである iOS 10 に移行したことです。

UNUserNotificationCenterDelegateUIApplicationDelegatしたがって、これは、古い通知処理コードをすべてリファクタリングして、独自の光沢のある新しいまとまりのあるプロトコルにすることができるため、既存の e をクリーンアップするのに役立ちます。

次に例を示します。

extension NotificationManager: UNUserNotificationCenterDelegate {

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: () -> Void) {

    switch response.actionIdentifier {

    // NotificationActions is a custom String enum I've defined
    case NotificationActions.HighFive.rawValue:
        print("High Five Delivered!")
    default: break
    }
}

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void) {

    // Delivers a notification to an app running in the foreground.
}
}
于 2016-10-05T08:06:31.543 に答える