イベントハンドラ

イベントハンドラを利用することで、プッシュ通知やアプリ内メッセージに対するユーザの操作とアプリの動作を連携させることが可能です。

iOS の場合

  • 各種イベントをハンドルするにはLogBaseDelegateを実装しLogBase.delegateに設定する必要があります。
  • LogBaseDelegateのメソッドは全てオプショナルですので、必要なハンドラだけを選んで実装できます。

AppDelegate にイベントハンドラを追加する場合

LogBaseDelegateはどのクラスに実装しても構いませんが、ここではAppDelegateに実装する例でご紹介します。

  1. AppDelegateLogBaseDelegateプロトコルを追加します。
  2. application:didFinishLaunchingWithOptions:の中で、SDK の初期化後に LogBase の呼び出し先に自身のクラスを設定します。
  3. AppDelegate内に取得したいイベントのハンドラを記述します。
import LogBase

// LogBaseDelegate を追加
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, LogBaseDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions
                      launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        // LogBase の初期化
        // ...

        LogBase.delegate = self

        // ...

    }

    // アプリ内メッセージが表示される直前に呼ばれます
    func logBaseMessageWillDisplay(with info: LPOWillDisplayInfo) -> Bool {
        print("willDisplay", info)
        // false を返すとアプリ内メッセージが表示されません
        return true
    }

    // アプリ内メッセージが表示されたときに呼ばれます
    func logBaseMessageDisplayed(with info: LPODisplayInfo) {
        print("displayed", info)
    }

    // 閉じるボタン以外のボタンがタップされたときに呼ばれます
    func logBaseMessageButtonTapped(with info: LPOButtonTapInfo) {
        print("buttonTapped", info)
    }

    // 閉じるボタンがタップされたときに呼ばれます
    func logBaseMessageClosed(with info: LPOCloseInfo) {
        print("closed", info)
    }

    // デバイストークンが作成された時に呼ばれます
    func logBaseDeviceIdCreated(_ deviceId: LPDeviceId) {
        print("createdDeviceId", deviceId)
    }

    // デバイストークンが変更された時に呼ばれます
    func logBaseDeviceIdChanged(from fromDeviceId: LPDeviceId, to toDeviceId: LPDeviceId) {
        print("changedDeviceId from:\\(fromDeviceId), to: \\(toDeviceId)")
    }
  }

Android の場合

イベントハンドラを登録したLogBaseParamsLogBaseInitializer.initialize()の第二引数に渡します。

LogBaseParams logbaseParams = LogBaseParams.builder()
    .deviceIdCallback(new DeviceIdCallback() {
        @Override
        // デバイス識別子が作成されたときに呼ばれます
        public void onCreate(DeviceId deviceId) {
            Log.i("DeviceIdCallback", "[onCreate] " + deviceId.token());
        }

        @Override
        // デバイス識別子が変更されたときに呼ばれます
        public void onChange(DeviceId from, DeviceId to) {
            Log.i("DeviceIdCallback", "[onChange] " + "from: " + from + ", to: " + to);
        }
    })
    .popUpEventHandler(new PopUpEventHandler() {
        @Override
        // ポップアップディスプレイが表示されたときに呼ばれます
        public void displayed(DisplayInfo displayInfo) {
            Log.i("PopUpEventHandler", "[displayed] " + displayInfo.toString());
        }

        @Override
        // ポップアップディスプレイ内のボタン(閉じるボタン以外)がタップされたときに呼ばれます
        public void buttonTapped(ButtonTapInfo buttonTapInfo) {
            Log.i("PopUpEventHandler", "[buttonTapped] " + buttonTapInfo.toString());
        }

        @Override
        // ポップアップディスプレイ内の閉じるボタンがタップされたときに呼ばれます
        public void closed(CloseInfo closeInfo) {
            Log.i("PopUpEventHandler", "[closed] " + closeInfo.toString());
        }

        @Override
        // ポップアップディスプレイが表示される直前に呼ばれます
        public boolean willDisplay(WillDisplayInfo willDisplayInfo) {
            Log.i("PopUpEventHandler", "[willDisplayInfo] " + willDisplayInfo.toString());
            // false を返すとポップアップディスプレイが表示されません
            return true;
        }
    })
    .build();
services = LogBaseInitializer.initialize(this, logbaseParams);