# AppsFlyer

[AppsFlyer](https://www.appsflyer.com/overview/) は、モバイル広告に関する宣伝効果の測定 ( アトリビューション ) および収集したデータの分析 ( アナリティクス ) において、業界における標準のツールになりつつあります。AppsFlyer が提供する正確な測定・分析結果に基づき、広告の提供元は、広告のターゲットの絞り込み、投資額の見直しなどを行え、よって、投資対効果 ( ROI ) を最適化できます。

AppsFlyer を使用すれば、アプリのインストール状況、ダウンロード状況、コンバージョン情報 ( conversion/目的達成の成否 ) などを監視・追跡できます。また、AppsFlyer 提供の API を使用すれば、他のアプリ/プラットフォームと連携することができます。

## 事前準備

AppsFlyer を使用した監視・追跡を行う前に、次の情報が必要となります。

1. `devKey`: AppsFlyer 提供の devKey です。
2. `appId`: ( iOS の場合 ) App Store で使用する App ID です。

## Monaca プロジェクトに AppsFlyer を追加する方法

1. Monaca クラウド IDE から、**`設定 → 外部サービス連携`**&#x3092;選択します。
2. *AppsFlyer* サービスの`詳細を見る`ボタンをクリックします。
3. &#x20;`インストール`ボタンをクリックします。

![](/files/-MgOm6NFErBAiESB9W_h)

&#x20;   4\. インストールを継続するか確認する画面が表示されます。`OK`をクリックして、インストールを開始します。

## 設定

次の記述を追加します。devKey ( および appID ) を渡して、監視・追跡処理を初期化します。

```javascript
document.addEventListener("deviceready", function(){

    var options = {
        devKey:  'xxXXXXXxXxXXXXxXXxxxx8'  // your AppsFlyer devKey
    };

    var userAgent = window.navigator.userAgent.toLowerCase();

    if (/iphone|ipad|ipod/.test(userAgent)) {
        options.appId = "123456789";       // your ios app id in app store
    }

    window.plugins.appsFlyer.initSdk(options);

}, false);
```

## 使い方

### SDK の初期化

SDK を初期化します。

```javascript
initSdk(options, onSuccess, onError): void
```

**パラメーター**

| 名前          | 型                        | 解説                                                |
| ----------- | ------------------------ | ------------------------------------------------- |
| `options`   | オブジェクト                   | SDK の設定を行います ( 設定値に関しては、下の 「 オプション 」 表をご確認ください )。 |
| `onSuccess` | (`message`: 文字列) => void | 成功時のコールバック : SDK の初期化が成功したときに呼ばれます ( 任意 )。        |
| `onError`   | (`message`: 文字列) => void | 失敗時のコールバック : SDK の初期化時に、エラーが発生した場合に呼ばれます ( 任意 )。  |

**options オブジェクト**

| 名前                                | 型   | デフォルト値  | 解説                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| --------------------------------- | --- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `devKey`                          | 文字列 |         | [Dev key の解説 ( AppsFlyer のサイト )](https://support.appsflyer.com/hc/ja/articles/211719806-App-Settings#sdk-dev-key)                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `appId`                           | 文字列 |         | ( iOS のみ ) App Store で使用する App ID です。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `isDebug`                         | 真偽値 | `false` | デバッグモード ( 任意 )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `onInstallConversionDataListener` | 真偽値 | `false` | <p>アトリビューション/コンバージョン データに、SDK 経由でアクセスします ( ディファード ディープリンク/Deferred DeepLinking )。AppsFlyer プラグインでは、アトリビューション データを、onSuccess コールバックに返します。詳細は、次のリンク先をご確認ください。 </p><p></p><ul><li><a href="https://support.appsflyer.com/hc/ja/articles/207032096-%E3%83%87%E3%82%A3%E3%83%95%E3%82%A1%E3%83%BC%E3%83%89%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%AA%E3%83%B3%E3%82%AF-%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%8F%96%E5%BE%97">ディファードディープリンク - コンバージョンデータの取得</a></li></ul> |

**例**

`initSdk()` 関数の使用例を、次に記します。

```javascript
var onSuccess = function(result) {
    //handle result
};

function onError(err) {
    // handle error
}

var options = {
    devKey:  'd3Ac9qPardVYZxfWmCspwL',
    appId: '123456789',
    isDebug: false,
    onInstallConversionDataListener: true
};

window.plugins.appsFlyer.initSdk(options, onSuccess, onError);
```

### アプリ内イベントトラッキング API

`trackEvent` メソッドを使用して、AppsFlyer の分析メカニズム ( AppsFlyer analytics ) 側に、アプリ内イベントの収集データを渡します。また、このメソッドを使用すれば、監視対象のイベントを、コードに直接追加して、動的に追加できるようになります。アプリ内イベントを使用すると、ユーザーの動向を分析できます。また、各種キャンペーンおよびメディアソースへの関連付けもできます ( ユーザーの操作と、そのきっかけとなったキャンペーンなどを対応付けできます )。ROI ( 投資対効果 ) と LTV ( 顧客生涯価値 ) の計算に必要となる、データ収集対象のイベントに関しては、慎重に選択する必要があります。

```javascript
trackEvent(eventName, eventValues): void (optional)
```

**パラメーター**

| 名前           | 型      | 解説                                |
| ------------ | ------ | --------------------------------- |
| `eventName`  | 文字列    | イベント名 ( カスタム可能 )。ダッシュボード上に表示されます。 |
| `eventValue` | オブジェクト | イベントの詳細                           |

**例**

`trackEvent()` 関数の使用例を、次に記します。

```javascript
var eventName = "af_add_to_cart";

var eventValues = {
    "af_content_id": "id123",
    "af_currency":"USD",
    "af_revenue": "2"
};

window.plugins.appsFlyer.trackEvent(eventName, eventValues);
```

### 通貨コードの設定

通貨コードを変更できます。

```javascript
setCurrencyCode(currencyId): void
```

**パラメーター**

| 名前           | 型   | デフォルト値 | 解説                                                                          |
| ------------ | --- | ------ | --------------------------------------------------------------------------- |
| `currencyId` | 文字列 | `USD`  | 使用できる通貨コードに関しては、[こちら ( ISO 4217 )](http://www.xe.com/iso4217.php) をご確認ください。 |

**例**

`setCurrencyCode()` 関数の使用例を、次に記します。

```javascript
window.plugins.appsFlyer.setCurrencyCode("USD");
window.plugins.appsFlyer.setCurrencyCode("GBP"); // British Pound
```

### カスタマーユーザー ID の設定 ( 詳細 )

カスタム ID をセットします。AppsFlyer 提供の ID 群 ( 端末 ID、ユーザー ID など ) と、このカスタム ID を紐づけすれば、各種情報を、カスタム ID 下に集約できるようになります。このカスタム ID ( AppsFlyer 側とユーザー側で使用している ID の紐づけに使用 ) は、AppsFlyer が提供する CSV レポートを出力時、および、PostBack 系の API の使用時にも使用できます。

{% hint style="info" %}
この ID の設定は、アプリを初めて起動するときに行う必要があります ( SDK の初期化時 )。実装方法としては、deviceready イベントの処理時に、この API を呼び出すことを推奨します。
{% endhint %}

```javascript
setAppUserId(customerUserId): void
```

**パラメーター**

| 名前               | 型   | 解説         |
| ---------------- | --- | ---------- |
| `customerUserId` | 文字列 | 独自のカスタム ID |

**例**

`setAppUserId()` 関数の使用例を、次に記します。

```javascript
window.plugins.appsFlyer.setAppUserId(userId);
```

### GCM プロジェクト番号の設定

GCM のプロジェクト番号をセットします。この番号を使用して、アプリのアンインストールを監視・追跡します ( Android プラットフォーム向け )。

```javascript
setGCMProjectID(GCMProjectNumber): void
```

**パラメーター**

| 名前                 | 型   | 解説                                                                                                                                                               |
| ------------------ | --- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GCMProjectNumber` | 文字列 | GCM のプロジェクト番号。Google Developer Console 上で確認できます。詳細は、[アンインストール計測](https://support.appsflyer.com/hc/ja/articles/210289286-アンインストール計測#Androidアンインストール) ページをご確認ください。 |

### トラッキングのアンインストール

アプリのアンインストールを監視・追跡するため、iOS のデバイストークンをセットします ( iOS プラットフォーム向け )。

```javascript
registerUninstall(token): void
```

**パラメーター**

| 名前      | 型   | 解説                                                                                                                                                                                                                                                                                                     |
| ------- | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `token` | 文字列 | iOS のデバイストークン。 `UnityEngine.iOS.NotificationServices.deviceToken` を使用すれば、デバイストークンを取得できます。詳細は、[Unity の解説](https://support.appsflyer.com/hc/ja/articles/213766183-AppsFlyer-SDKの実装-Unity)、および、[iOS アンインストールの計測](https://support.appsflyer.com/hc/ja/articles/210289286-アンインストール計測#iOSアンインストール) をご確認ください。 |

### AppsFlyer のデバイスIDを取得する

この API を使用すれば、AppsFlyer 側で独自に割り振っている端末 ID を取得できます。この端末 ID は、各種レポートの出力時、および、各種 API で使用されます。

```javascript
getAppsFlyerUID(getUserIdCallbackFn): void
```

**パラメーター**

| 名前                    | 型          | 解説         |
| --------------------- | ---------- | ---------- |
| `getUserIdCallbackFn` | () => void | 成功時のコールバック |

**例**

`getAppsFlyerUID()` 関数の使用例を、次に記します。

```javascript
var getUserIdCallbackFn = function(id) {
    alert('received id is: ' + id);
}
window.plugins.appsFlyer.getAppsFlyerUID(getUserIdCallbackFn);
```

### ディープリンク トラッキング

AppsFlyer のアトリビューション データを使用して、ディープリンクを追跡します。

{% hint style="info" %}
Android バージョン 4.2.5 以降では、ディープリンク関連のメタデータ ( scheme、host ) は 、自動的に送付されます。
{% endhint %}

```javascript
handleOpenUrl(url): void
```

**パラメーター**

| 名前    | 型   | 解説  |
| ----- | --- | --- |
| `url` | 文字列 | Url |

**例**

The following snippet shows how to use `handleOpenurl()` function:

```javascript
var handleOpenURL = function(url) {
    window.plugins.appsFlyer.handleOpenUrl(url);
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ja.docs.monaca.io/reference/service_integration/apps_flyer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
