コンテンツにスキップ

アプリ起動時の通知表示

通知受信後に通知を開封せずにアプリを起動した際に直前に受信した通知を表示することができます。(起動時通知)
通知のタイプによって動作を変えることが可能です。
デフォルトでは、動画またはGIFが添付された通知で起動時通知が有効になっています。

起動時通知の設定

// Class RFApp
static func setLaunchMode(modes:[RFContentType]?)
// Class RFApp
+ setLaunchMode:
パラメータ 内容
modes 起動時通知を有効にする通知の種類


起動時通知を設定できる通知の種類

public enum RFContentType {
    case text    //テキストのみ
    case image   //静止画像
    case gif     //GIF
    case movie   //動画
}
typedef NS_OPTIONS(NSUInteger, RFLaunchModes) {
    RFLaunchModeNone    = 0,
    RFLaunchModeText   = (1 << 0),  //テキストのみ
    RFLaunchModeImage  = (1 << 1),  //静止画像
    RFLaunchModeGif    = (1 << 2),  //GIF画像
    RFLaunchModeMovie  = (1 << 3)   //動画
};

実装例

Swift

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication,
                    didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // 管理サイトで発行されたSDK実行キーを設定
        RFApp.setServiceKey(serviceKey: "1234567890",
            appGroupId: "group.jp.co.infocity.richflyer",
            sandbox: false)

        // 通知のDelegate設定
        RFApp.setRFNotficationDelegate(delegate: self)

        // OSに対してプッシュ通知受信の許可をリクエスト                                      
        RFApp.requestAuthorization(application: UIApplication.shared, applicationDelegate: self)

        // 動画と静止画が添付された通知のみ起動時通知を行う
        RFApp.setLaunchMode(modes: [.movie, .image])
        // 起動時通知を行わない
        //RFApp.setLaunchMode(modes: [])

        return true
    }
}


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


注意

通知センターからの通知開封時の処理とは別に実装する必要があります。

@available(iOS 10, *)
// RFNotificationDelegateの実装
extension AppDelegate: RFNotificationDelegate {
    // アクションボタンが押された際の動作
    func dismissedContentDisplay(_ action: RFAction?, content: RFContent?) {
        // 通知の情報を取得
        if let content = content {
            // 通知IDを取得
            let notificationId = content.notificationId
        }

        // カスタムアクションの情報を取得
        if let action = action {
            // カスタムアクションボタンのラベル
            let title = action.title
            // カスタムアクションボタンに設定されている値
            let value = action.value
            // カスタムアクションボタンのタイプ(url, scheme)
            let type = action.type
        }
    }
}
Objective-C

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 管理サイトで発行されたSDK実行キーを設定
    [RFApp setServiceKey:@"1234567890" appGroupId:@"group.jp.co.infocity.richflyer" sandbox:NO];

    // delegateの設定
    [RFApp setRFNotificationDelegate:self];

    // OSにプッシュ通知の受信許可をリクエスト
    [RFApp requestAuthorization:[UIApplication sharedApplication]
                                applicationDelegate:self];

    // 動画と静止画が添付された通知のみ起動時通知を行う
    [RFApp setLaunchMode:RFLaunchModeImage|RFLaunchModeMovie];
    // 起動時通知を行わない
    // [RFApp setLaunchMode:RFLaunchModeNone];

    return YES;
}

@end


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

注意

通知センターからの通知開封時の処理とは別に実装する必要があります。

@implementation AppDelegate

// アクションボタンが押された際の動作
- (void)dismissedContentDisplay:(RFAction *)action content:(RFContent*)content
{
    // 通知IDの取得
    NSString* notificationId = content.notificationId;

    // カスタムアクションボタンのラベル
    NSString* title = [action getTitle];
    // カスタムアクションボタンに設定されている値
    NSString* value = [action getValue];
    // カスタムアクションボタンのタイプ(url, scheme)
    NSString* type = [action getType];
}

@end