コンテンツにスキップ

iOS SDK

以下のガイドに沿って、FlareLane がプッシュ通知を送信するために必要な認証情報を入力します。

対象ターゲットの Signing & Capabilities を開き、左上の + Capability をクリックして Push Notifications を追加します。

続いて Background Modes を追加し、Remote notifications を有効にします。

Push Notifications と Background Modes が有効になった Xcode の Signing & Capabilities タブ

iOS では、画像などのメディアを添付するために Notification Service Extension が必要です。

Xcode で File > New > Target を開き、Notification Service Extension を選択します。

Notification Service Extension を選択した Xcode の新規ターゲット作成ダイアログ

Product Name に適切な名前を入力します。本ガイドでは FlareLaneNotificationServiceExtension を使用します。

Product Name に FlareLaneNotificationServiceExtension を入力した Xcode の新規ターゲット設定画面

別の Scheme が有効化されないように、Cancel をクリックします。

新しい Scheme を有効化するか確認する Xcode のダイアログで Cancel が強調表示されている

次に、作成した Notification Service Extension ターゲットMinimum Deployments バージョンを、メインアプリのターゲットのバージョンに合わせて設定します。

Notification Service Extension の Minimum Deployments を設定する Xcode のターゲット設定画面

メインアプリと Extension の間でデータを同期するために、App Group が必要です。

対象ターゲットの Signing & Capabilities を開き、左上の + Capability をクリックして App Groups を追加します。

group.bundleID.flarelane という名前のグループを追加します**。bundleID の部分は、メインアプリの Bundle Identifier と一致させる必要があります。**

App Groups Capability と flarelane グループを追加した Xcode の Signing & Capabilities

正常に追加できたら、その App Group を有効にします。

flarelane グループが有効になった Xcode の App Groups Capability

同様に、先ほど作成した Extension にも同じ名前の App Group を追加して有効にします。

flarelane グループが有効になった Xcode の Extension ターゲットの App Groups Capability

以下の 2 つの連携方法から、プロジェクトに最も適したものを選択してください。

Podfile を開いて以下を追加します。

// Dynamic Frameworks を有効にするため、ファイルの先頭に以下の行を追加します。
use_frameworks!
target 'YOUR_PROJECT_NAME' do
// 以下の行を追加します
pod 'FlareLane', '1.10.0'
end
// ファイルの末尾に以下の行を追加します。
// ターゲット名には、先ほど入力した Extension の Product Name を指定してください。
target 'FlareLaneNotificationServiceExtension' do
pod 'FlareLane', '1.10.0'
end

pod install を実行して SDK のインストールを完了します。

パッケージ URL に https://github.com/flarelane/FlareLane-iOS-SDK を入力し、Exact Version1.9.3 に設定します。

FlareLane iOS SDK の URL と Exact Version を入力した Xcode の Swift Package Manager ダイアログ

メインターゲットには FlareLane を、Extension ターゲットには FlareLaneExtension を選択します。

FlareLane のメインターゲットと Extension ターゲットのパッケージプロダクトを選択する Xcode の SPM 画面

5-1.(SwiftUI のみ)AppDelegate.swift の作成

Section titled “5-1.(SwiftUI のみ)AppDelegate.swift の作成”

SwiftUI プロジェクトには AppDelegate.swift ファイルが含まれていないため、まずこれを作成する必要があります。

新しく AppDelegate.swift ファイルを作成し、既存の <YOUR_PROJECT_NAME>App.swift ファイルにいくつか変更を加えます。

import UIKit
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
return true
}
}
  1. application(:didFinishLaunchingWithOptions:) メソッドを追加します
  2. application(:didRegisterForRemoteNotificationsWithDeviceToken:) メソッドを追加します
import FlareLane
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 1
// 通知許可ダイアログを表示するタイミングを制御したい場合は、3 番目の引数を false にして、任意のタイミングで .subscribe() を呼び出してください。
FlareLane.initWithLaunchOptions(launchOptions, projectId: "PROJECT_ID", requestPermissionOnLaunch: true)
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// 2
FlareLaneAppDelegate.shared.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
}
}

5-3. UNUserNotificationCenterDelegate メソッドの追加

Section titled “5-3. UNUserNotificationCenterDelegate メソッドの追加”
  1. AppDelegate を UNUserNotificationCenterDelegate として設定します
  2. userNotificationCenter(:willPresent:withCompletionHandler:) メソッドを追加します
  3. 対応するメソッドを追加します
import FlareLane
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 1
UNUserNotificationCenter.current().delegate = self
}
}
extension AppDelegate: UNUserNotificationCenterDelegate {
// 2
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
FlareLaneNotificationCenter.shared.userNotificationCenter(center, willPresent: notification, withCompletionHandler: completionHandler)
}
// 3
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
FlareLaneNotificationCenter.shared.userNotificationCenter(center, didReceive: response, withCompletionHandler: completionHandler)
}
}

5-4. UNNotificationServiceExtension メソッドの追加

Section titled “5-4. UNNotificationServiceExtension メソッドの追加”
  1. didReceive(:withContentHandler:) メソッドを追加します
  2. serviceExtensionTimeWillExpire() メソッドを追加します
import UserNotifications
import FlareLane
class NotificationService: UNNotificationServiceExtension {
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
// 1
// FlareLane から送信されたプッシュ通知に対してのみ FlareLane のメソッドが実行されるよう、ロジックを分岐させます。
if FlareLaneNotificationServiceExtensionHelper.shared.isFlareLaneNotification(request) {
FlareLaneNotificationServiceExtensionHelper.shared.didReceive(request, withContentHandler: contentHandler)
} else {
// ...
}
}
override func serviceExtensionTimeWillExpire() {
// 2
FlareLaneNotificationServiceExtensionHelper.shared.serviceExtensionTimeWillExpire()
}
}

アプリをインストールした時点で FlareLane に作成されるデバイスは「匿名デバイス」です。別途管理している一意のユーザー IDを連携することで、FlareLane のデバイスをお客様自身のユーザー ID と紐付けることができます。

ユーザー ID の連携には多くのメリットがあります。 会員と非会員を区別できるようになるほか、いつでもユーザー ID 単位でプッシュ通知を送信できるようになるため、連携の早い段階で設定することをおすすめします。

一般的には、ユーザーがサインアップまたはログインに成功したタイミングで、setUserId 関数を使ってユーザー ID を連携します。

FlareLane.setUserId(userId: "USER_ID")

WebView ベースアプリ向けのブリッジ連携

Section titled “WebView ベースアプリ向けのブリッジ連携”
  • FlareLane は、ウェブサイト上で行われた操作をアプリ側でも認識できるよう、WebView ベースのアプリ向けにさまざまな便利機能を提供しています。WebView ベースのモバイルアプリブリッジガイドをご覧ください。
  • FlareLane はデフォルトで、プッシュ通知がクリックされた際に https リンクやディープリンクなどの URL を自動的に処理します。 独自のクリックハンドラーを実装する必要がある場合は、URL の自動処理を無効にするをご覧ください。

アプリ内メッセージ(ポップアップ)の表示

Section titled “アプリ内メッセージ(ポップアップ)の表示”
ガイド
モバイル SDK リファレンス
iOS SDK リリースノート