通知の開封¶
通知センターからプッシュ通知が開封された時に呼び出されます。 通知に設定したアクションボタンがタップされた場合は、その情報が取得できます。
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
{
// "フォアグラウンド状態での受信"の章にて説明
}