コンテンツにスキップ

通知の開封

通知センターからプッシュ通知が開封された時に呼び出されます。 通知に設定したアクションボタンがタップされた場合は、その情報が取得できます。

Swift

AppDelegate.swift

delegateの設定

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
        if #available(iOS 10.0, *) {
            // 通知のdelegate設定
            RFAppDelegate.setRFNotficationDelegate(delegate: self)
        }
        return true
    }
}


RFNotificationDelegateの実装(カスタムアクションボタンが押された時の情報取得)

@available(iOS 10, *)
// RFNotificationDelegateの実装
extension AppDelegate: RFNotificationDelegate {
    func didReceiveNotification(_ center: UNUserNotificationCenter,
                                didReceive response: UNNotificationResponse,
                                withCompletionHandler completionHandler: @escaping () -> Void) {
        RFApp.didReceiveNotification(response: response) { (act, extendedProperty) in
            // カスタムアクションの情報を取得
            if let action = act {
                // カスタムアクションボタンのラベル
                let title : String = action.title
                // カスタムアクションに設定されている値
                let value : String = action.value
                // カスタムアクションの種類(url,scheme)
                let type : String = action.type
            }

            // 拡張プロパティを取得
            if let exProp = extendedProperty {
              print(exProp)
            }

        }
        completionHandler()
    }

    func willPresentNotification(_ center: UNUserNotificationCenter,
                                 willPresent notification: UNNotification,
                                 withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        // "フォアグラウンド状態での受信"の章にて説明
    }
}

Objective-C

AppDelegate.h

#import <UserNotifications/UserNotifications.h>

// RFNotificationDelegateプロトコルを追加する
@interface AppDelegate : UIResponder <UIApplicationDelegate, RFNotificationDelegate>

AppDelegate.m

delegateの設定

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions {
    // 通知のdelegateを設定する
    [RFApp setRFNotificationDelegate:self];

    return YES;
}


RFNotificationDelegateの実装(カスタムアクションボタンが押された時の情報取得)

- (void)didReceiveNotificationWithCenter:(UNUserNotificationCenter *)center response:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
{
    //通知を開封したときに呼ばれる
    [RFApp didReceiveNotification:response handler:^(RFAction *action, NSString* extendedProperty) {
        // カスタムアクションの情報を取得
        if (action) {
            // カスタムアクションボタンのラベル
            NSString* title = [action getTitle];
            // カスタムアクションに設定されている値
            NSString* value = [action getValue];
            // カスタムアクションの種類(url,scheme)
            NSString* type = [action getType];      
        }

        // 拡張プロパティを取得
        if (extendedProperty) {

        }
    }];
    completionHandler();
}

- (void)willPresentNotificationWithCenter:(UNUserNotificationCenter *)center notification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
{
    // "フォアグラウンド状態での受信"の章にて説明
}