1
2

More than 3 years have passed since last update.

MarketingCloudSDK In-App Messaging概要

Last updated at Posted at 2020-08-18

In-App Messagingとは

ユーザがアプリのプッシュ通知を許可していなくてもユーザにメッセージを配信できるアプリ内メッセージのことです。
アプリがフォアグラウンドの状態になる度にアプリ内メッセージが読み込まれ、SMCで作成したメッセージが、アプリのビュースタックの最上部に表示されます。(閉じたメッセージは再度表示されません)

メッセージのテンプレートは以下3つがあります

フルページ
 レイアウトが画面全体に表示される
バナー
 画面最下部または最上部に表示される
モーダル
 画面の一部に全面表示される

上記3つともSMCのContent Builderで設定可能です。
また色や、画像の配置、フォントサイズなどカスタマイズ可能になっています。
※文字のフォントに関してはデバイスのシステムフォントを使用しているため、アプリ側のフォント上書きの実装が必要です。

通知するにはJourneyBuilderからアプリ内メッセージの送信が必要です。

実装

以下、公式ドキュメントから参照となります。

1.アプリ内メッセージング機能をViewControllerにデリゲートするためにsfmc_setEventDelegateメソッドを使用を使用する

ViewController.swift
// クラス宣言のMarketingCloudSDKEventDelegateプロトコルに従います。
class MyViewController: UIViewController, MarketingCloudSDKEventDelegate

...

// 実装のどこかで、アプリ内メッセージイベントのためのSDKのデリゲートとしてクラスを設定します。

// 可能であれば、クラスの初期化の早い段階で行う必要があります。
MarketingCloudSDK.sharedInstance().sfmc_setEventDelegate(self)

2.ビューの表示や削除に対応するデリゲートメソッドを追加する

ViewController.swift
func sfmc_didShow(inAppMessage message: [AnyHashable : Any]) {
    // message shown
}

func sfmc_didClose(inAppMessage message: [AnyHashable : Any]) {
    // message closed
}

3.アプリ内メッセージの表示を遅延させたり、防止したりすることができる。例えば、ロード中、インストラクション中、サインインフロー中などにアプリ内メッセージが表示されないようにする。メッセージの表示を防ぐには、shouldShowInAppMessageメソッドをfalseを返すようにする。

ViewController.swift
func sfmc_shouldShow(inAppMessage message: [AnyHashable : Any]) -> Bool {
    // メッセージを表示するタイミングなどのロジックを書く
    if (self.messageCanBeShown) {
        return true
    }
    else {
        // メッセージデータを取得するできる
        self.showMessageId = self.sdk.sfmc_messageId(forMessage: message)
    }
    return false
}

4.メッセージデータを取得(sfmc_messageIdForMessage)して、後から表示(sfmc_showInAppMessage)することが可能

ViewController.swift
if (self.showMessageId != nil) {
    MarketingCloudSDK.sharedInstance().sfmc_show(inAppMessage: self.showMessageId)
}

5.アプリ内メッセージのフォントを変更するなら以下のデリゲートメソッドを使用し、デバイスにインストールされているフォントまたはアプリのカスタムフォントの有効なフォント名をSDKに渡す。

ViewController.swift
MarketingCloudSDK.sharedInstance().sfmc_set(inAppMessageFontName: "Zapfino")

参考リンク(公式)

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2