Swift
TUNE

[iOS][Tune] iOS プロジェクトにTune SDK を導入する

iOSプロジェクトの効果測定用にTuneを導入した際のメモ書きです。
ユーザ識別子(User ID)の設定や イベント送信方法、流入元計測方法やそれらの確認方法を記載します。

SDK導入に関してはシンプルなので特筆することはあまりないですが、Tune管理画面での動作確認で多少手間取った部分があったので共有します。

  • Swift 3.1
  • Tune SDK 5.0.1
  • CocoaPods 1.2.1

:grey_question: Tune とは

https://www.tune.com
TUNE Japanの紹介文では以下のように紹介されていました。
''
TUNEは、現代のデジタルマーケターが効率的にマーケティングキャンペーンを運用、的確なグループをターゲッティング、そして、アプリパフォーマンスの最適化を通して、ビジネス成長に繋げるためのモバイルマーケティングツールを提供します。
''
actual.png

:pen_ballpoint: 登録

  1. tune.comにアクセスし、画面右上のLOGINを選択します。
  2. 必要なフィールドに情報入力し、SUBMITします。
    request.png
  3. 暫くすると先方の担当者からメールがあるのでログインします。

:pencil: アプリ追加

Tune SDKを組み込む際に Advertiser IDConversion Key なるものが必要なため、Tuneの管理画面から事前にAppを作成し取得しておきます。

  1. Loginすると、Marketing Console が表示されるので画面右上のメニューボタンからAttribution Anlayticsを選択します。
  2. 左ペインの APPLICATIONS > Apps を選択し、Add a New App します。
  3. 各項目を入力し、 Create App & Continue します。
    add_a_new_app.png
    • App Name: アプリ名
    • Channel: Mobile
    • Platform: iOS
    • Package Name: アプリのバンドルID
    • Store App ID: AppStore のID
    • Destination URL: AppStore のURL
  4. 作成すると Details が表示されるのでその中の Conversion KeyAdvertiser Id を控えておきます。
    app_details.png

:tools: SDKの導入

導入はシンプルなのでこちらのクイックスタートページを参考に進めてもらえれば問題ありません。

実装についてはObjective-Cで書かれていますが、Swiftでも文法以外同じです。
Swiftで書かれている参考ページはこちら

初期化と測定の開始

import Tune

@UIApplicationMain
final class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        ...

        // 初期化
        Tune.initialize(withTuneAdvertiserId: "<ADVERTISER_ID>", tuneConversionKey: "<CONVERSION_KEY>")

        ...
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
        // 測定の開始
        Tune.measureSession()
    }
}

<ADVERTISER_ID> ... 控えておいたAdvertiser IDを指定します。
<CONVERSION_KEY> ... 控えておいたConversion Keyを指定します。

別のBundle IDを指定したい場合は下記の初期化関数を利用するか、もしくは setPackageName() が利用できます。

Tune.initialize(withTuneAdvertiserId: "<ADVERTISER_ID>", tuneConversionKey: "<CONVERSION_KEY>", tunePackageName: Bundle.main.bundleIdentifier!, wearable: false)
Tune.setPackageName(Bundle.main.bundleIdentifier!)

User ID の設定

initializeの後に setUserId() を行うと管理画面上で User ID として確認可能になります。アプリのサービスで一意に扱われるIDを指定したりします。
これとは別にTune 上で一意なものとしては Tune ID があります。
確認方法は後述。

        ...
        // 初期化
        Tune.initialize(withTuneAdvertiserId: "<ADVERTISER_ID>", tuneConversionKey: "<CONVERSION_KEY>")
        // `User ID`のセット
        Tune.setUserId("<USER_ID")
        ...

イベントの送信

任意の識別子で属性を5つまで与えられるイベントが送信できます。
Attribution AnalyzeではCustom Field が使用できないのでそういった要素はこれで行う。確認方法は後述。

func sendSetUserIdentifierEvent() {
    if let event = TuneEvent(name: "hogehoge"),
        let item1 = TuneEventItem(name: "fugafuga", attribute1: "fugafuga value1", attribute2: "fugafuga value2", attribute3: "", attribute4: "", attribute5: ""),
        let item2 = TuneEventItem(name: "piyopiyo", attribute1: "piyopiyo value", attribute2: "", attribute3: "", attribute4: "", attribute5: "") {
        event.eventItems = [item1, item2]
        Tune.measure(event)
    }
}

iOS IFA(IDFA)の取得

SDKの方で自動的に取得して記録されます。
もし自前APIなどに紐付けしたい場合は以下で取得できます。

let idfa = Tune.appleAdvertisingIdentifier()

Tune IDの場合、以下で取得します。

let tuneId = Tune.tuneId()

流入元計測

どこからアプリのストアページに行き着いてインストールしたのかが計測できます。
まずはパートナーを追加してそれを元に計測URLを作成します。

1. パートナーの追加

1-1. 管理画面左ペインの PARTNERS > Partners から Add Partner します。
add_partner_1.png

1-2. 名称入力、Typeを選択し Add Partner します。TypeはAdvertising PartnerとTechnology Partnerがあります。
add_partner_2.png

2. 計測URLの追加

2-1. 管理画面左ペインの PARTNERS > Measurement URLs から Create Measurement URLs します。
2-2. それぞれ適切に設定します。

Select your App: 対象アプリを選択します。

Select your Partner: 上のセクションで追加したパートナーを選択します。

Select your Agency: 代理店があれば選択します。

2-3. Saveボタンの上にURLが表示されますので控えます。
2-4. Saveします。

下記に各設定についての詳細が記載されています。

測定 URL を作成する - TUNE HELP

measurement_url.png

端末のSafariで上記生成したURLを踏み、その後にXcodeやFabricからアプリをインストールしておきます。
確認方法は後述。

:eyes: 確認方法

管理画面にLoginして記録されているか確認します。

割と重要なことですがInstallsやOpensのレポートへの反映は 先勝ちで1日1回しか記録されません
つまりInstallした場合、再Installしても同端末、同日なら記録されません。
どうしても当日中にその同端末で記録させたい場合は、iOSの広告IDをリセットするしかなさそうです。
iOS設定 > プライバシー > 広告 > Advertising Identifierをリセット... します。
*全アプリで共通のためご注意ください

Eventは1日に複数回記録されることを確認しています。

インストールの確認

左ペインの REPORTING > Test Logs > Installs にだいたい数分で反映されます。
直近、12時間以内のものが表示されるのでそれ以上経っている場合は、REPORTING > Logs > Installs で確認できます。
test_logs.png

オープンの確認

左ペインの REPORTING > Logs > Opens に反映されますが、こちらは Test Logs とは異なり、数時間ほど経過しないと反映されないような感じですので気長に待つしかありません。
logs_open.png

User ID の確認

  1. Logs, Test Logs にある Configure Report を選択して Metrics > Internal > +14 more を押して他の候補を表示します。 user_id_1.png
  2. User ID を有効にして Apply します。 user_id_2.png
  3. 右にスクロールすると最後に User ID が追加されています。 user_id_3.png

イベントの確認

Logs, Test Logs にある Event Items から確認できます。
Configure Report から Attribute 1 ~ Attribute 5を有効にしておくと表示されます。
event_log.png

流入元計測の確認

Logs, Test Logs のPartnerカラムに表示されます。
measurement_url_result.png

何が取れているのか?

実際、どのような情報が取得できているのかを確認するには、(UI操作的に少し面倒ですが) Configure Report の全ての項目にチェックして cvsでexportすると見やすいかもしれません。
export_1.png

export_2.png

その他

セッションが切れ、reloadすると"File not found."とエラー表示された空白ページになってしまい読み込みできなくなってしまう問題があるようです。
tune.comにアクセスし直してもう一度Loginする必要があります。

またページによっては日本語だと若干情報が欠けている部分があったりするのであれ?と思ったら左上のLanguages メニューからEnglishを選択してください。

感想

マーケ的に有用なのかどうか詳しくないので私には判断できませんが、折角いろいろ端末情報が取れていてよくできているように思うのですが、管理画面を使用していると細かい部分でUIがイケてなくて損しているように感じましたw
反映に時間がかかるのはしょうがないとして、下記だけでも改善をお願いしたいところです。

  • LogsやTest Logsだけでなく色々なページに日付選択やConfigure設定がありますが、ページ切り替え都度都度選択が解除されてしまうので面倒(タイムゾーンだけはMy Account Settingsで設定できる)
  • 日付のデフォルト選択がなぜか昨日のみの選択になっている
  • セッション切れエラー表示のままになってしまう件
  • Configure Reportでたくさん選択すると横スクロールが長大になりがち
  • 全体的に読み込みが少し重め

tune.com
TUNE Japan Facebook