iOS SDK

ネイティブ・アプリやハイブリッド・アプリにOracle Data CloudプラットフォームのiOS SDKをインテグレーションすると、画面からモバイル・ユーザー属性(製品ページへの訪問、購入意図、カートへの追加アクションおよびコンバージョン)を抽出し、それらをOracle Data Cloudプラットフォームに転送できるようになります。

モバイル・アプリ・データをOracle Data Cloudプラットフォームにインポートするには、モバイル・アプリの画面にOracle Data Cloud iOS SDKを追加し、phint (ユーザー属性を表すキーと値のペア)をプラットフォームに渡し、phintをタクソノミ内のカテゴリにマッピングするためのルールを作成します。次の図は、モバイル・アプリからユーザー・データを抽出し、それをOracle Data Cloudプラットフォームにインポートする方法を示しています。

重要:

  • まだ実行していない場合、レビューのためにアプリをアップロードするときに、IDFAを使用して広告を配信していることをAppleに通知する必要があります。
  • ユーザーが設定で「Limit Ad Tracking」を有効にしている場合、そのデータはOracle Data Cloudサーバーに送信できません。

SDKのダウンロード

SDKをダウンロードする手順は、次のとおりです。

  1. ここをクリックしてファイルを保存します。
  2. アーカイブからSDKファイルを抽出します。

サイトIDの取得

モバイル・アプリでOracle Data CloudプラットフォームのiOS SDKをインスタンス化するには、サイトIDが必要です。サイトIDは、Oracle Data Cloudプラットフォームでデータを管理するために使用されます。分類ルールでは、ユーザー属性をマッピングするカテゴリを識別するためにサイトIDが使用されます。サイトIDを生成するには、コンテナを作成します。コンテナは、UIまたはコンテナAPI作成できます。テストおよび本番環境では、異なるサイトIDを作成することをお薦めします。

コンテナの作成後、ADIDに対するダイレクト収集アクセスをリクエストするMOSチケットをオープンし、パートナ名、パートナIDおよびサイトIDを含めます。

所在地が欧州連合(EU)であるユーザー・プロファイルのデータをオンボーディングするには、オラクル社の一般データ保護規則(GDPR)への利用許諾書に署名している必要があります。同意書に署名していない場合は、EU以外の国に対して構成されたコンテナのみを作成できます。つまり、ブラックリストにはEU地域または加盟国を含める必要があり、ホワイトリストには含めることができません。無効な構成でコンテナを作成しようとすると、UIまたはAPIでエラーが表示されます。デフォルトでは、新規コンテナにはEUがブラックリスト登録されます。GDPRへの利用許諾書を取得して署名するには、オラクル社のアカウント担当者にお問い合せください。

データのスコープ指定

モバイル・アプリから抽出してOracle Data Cloudプラットフォームに転送するユーザー属性を識別します。たとえば、アプリにトースタに関する画面が含まれている場合は、ユーザーがその画面を訪問したときに、プラットフォームにtoaster属性を渡すことが考えられます。コンサルティング・サービスを購入した場合は、モバイル・アプリのスコープの決定とデータ収集戦略の策定についてソリューション・コンサルタントに相談してください。

SDKのインテグレーション

モバイル・アプリからページレベルでユーザー・データを収集し、それをOracle Data Cloudプラットフォームに転送するには、SDKをアプリに追加して実装する必要があります。その後、App Storeで新しいバージョンのアプリをリリースします。

この項では、例としてXCode環境を使用します。別のIDEを使用する場合は、適切に調整する必要があります。

プロジェクトへのSDKの追加

  1. XCodeで、プロジェクト・ディレクトリにBlueKai_SDKライブラリ・フォルダをドラッグします。

  2. 表示されるダイアログ・ボックスで、環境に適合するオプションを選択します。

フレームワークの追加

AdSupportおよびSystemConfigurationフレームワークをプロジェクトに追加する必要があります。

フレームワークを追加する手順は、次のとおりです。

  1. XCodeで、プロジェクト・プロパティに移動します

  2. 「Build Phases」を選択します。
  3. 「Link Binary With Libraries」領域を開き、プラス記号アイコンをクリックします。
  4. 検索ボックスにAdSuppと入力します。
  5. リストからAdSupport.frameworkを選択します
  6. 「Add」をクリックします。

  7. 再度プラス記号アイコンをクリックして、検索ボックスにSystemと入力します。

  8. リストからSystemConfiguration.frameworkを選択します。
  9. 「Add」をクリックします。

SDKの追加

  1. ViewController.hファイルまたはビューのヘッダー・ファイルに、次を追加します。

  2. ```objective-c
    @class BlueKai;
    ```
    
  3. 対応する実装(.m)ファイルの上部で、次を追加します。

  4. ```objective-c
    #import "BlueKai.h"
    ```
    
  5. ViewController.hファイルで、SDKのインスタンスを定義します。

  6. ```objective-c
    @interface ViewController : UIViewController
    {
        BlueKai *blueKaiSdk;
    }
    ```
    

SDKの初期化

NSURLConnectionイニシャライザを使用して、Oracle Data Cloudプラットフォームへの直接接続を設定します。実装コードで使用できる方法は2つあります。initDirectAutoIdfaEnabledWithSiteIdメソッドは自動的にIDFAを送信します。


```objective-c
blueKaiSDK = [[BlueKai alloc] initDirectAutoIdfaEnabledWithSiteId:@"2" withAppVersion:@"1.0" withDevMode:YES];
```

initDirectWithSiteIdメソッドは、IDFAを自動的には送信しませんが、これを送信するためのwithIdfa:idfaパラメータを含めることができます。

		
```objective-c
blueKaiSDK = [[BlueKai alloc] initDirectWithSiteId:@"2" withAppVersion:version withIdfa:idfa withDevMode:YES];
```

両方のメソッドについて、アプリは次のようにコールしてIDFAを取得できます。

```objective-c
- (NSString *)identifierForAdvertising
{
    if([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled])
    {
        NSUUID *IDFA = [[ASIdentifierManager sharedManager] advertisingIdentifier];
        return [IDFA UUIDString];
    }

    return nil;
}
```

オプトイン・プリファレンスもYESにする必要があります。

```objective-c
[blueKaiSDK setOptInPreference:YES];
```

Oracle Data Cloudプラットフォームへのデータの送信を停止するには、次の設定をNOに変更します。

```objective-c
[blueKaiSDK setOptInPreference:NO];
```

セキュアなリクエストの送信

常にHTTPSを使用してリクエストを送信する必要があります。アプリが送信するリクエストに対してHTTPSを有効にするには、ViewController.hファイルまたは実装ファイルで、[blueKaiSDK setUseHttps:YES];を設定します。必要に応じて、Info.plistファイルに例外を追加できます。

重要:回避する方法がない場合を除いて、例外を追加しないでください。セキュアな接続は常に優先され、頻繁に必要になります。


```xml
<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>bluekai.com</key>
            <dict>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
            <key>bkrtx.com</key>
            <dict>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
        </dict>
    </dict>
```

SDKへの値の引渡し

SDKに単一のキーと値のペアを渡すには、次のメソッドを使用します。

    [blueKaiSdk updateWithKey:@"myKey" andValue:@"myValue"];

SDKに複数のキーと値のペアを渡すには、キー/値ペアを使用してNSDictionaryを作成し、次のメソッドを使用します。

    [blueKaiSdk updateWithDictionary:@{@"myKey1":@"myValue1", @"myKey2":@"myValue2"}];

データ投稿の再開

SDKのresume ()メソッドは、コール元ビュー・コントローラのappCameToForeground ()メソッドから起動する必要があります。このメソッドにより、キューに入れられたデータが送信されます。データのアップロードの進行中にアプリケーションがクローズされたため、またはネットワークの問題のため、キューに入っているデータが送信されなかった可能性があります。

viewDidLoadメソッドまたは別の場所に通知を作成します。

```objective-c
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appCameToForeground) name:UIApplicationWillEnterForegroundNotification object:nil];
```

メソッドappCameToForegroundおよびコールresume()を定義します。

```objective-c
- (void)appCameToForeground
{
   [blueKaiSdk resume];
}
```

オプションで、Oracle Data Cloudサーバーにデータが投稿されたときにコールバックが必要な場合は、ViewController.hでSDK委譲を宣言します。


```objective-c
#import "BlueKai.h"

@interface ViewController : UIViewController <BlueKaiOnDataPostedListener>

@end
```

ViewControllerを委譲として設定します。このコードは、初期化コードの直後に配置できます。

```objective-c
blueKaiSdk = [[Bluekai alloc]initWithSiteId:@"2" withAppVersion:version withDevMode:NO];
blueKaiSdk.delegate = (id) <BlueKaiOnDataPostedListener> self;
```

データ投稿のステータスに関するコールバックを取得するには、ViewController.hで次の委譲メソッドを実装します。

```objective-c
- (void)onDataPosted:(BOOL)status {
    if (status) {
        // ... react to data being posted to BlueKai...
    }
}
```

データが正常に投稿されると、ステータスがYESに設定されます。投稿が失敗した場合、ステータスはNOになります。

デフォルトでのアプリケーション表示名の送信

アプリでは、サイトIDに加えて、アプリケーションの表示名も送信することをお薦めします。

```objective-c
    NSDictionary *infoPList = [[NSBundle mainBundle] infoDictionary];
    NSString *displayName = [infoPList objectForKey:@"CFBundleDisplayName"];
    [blueKaiSdk updateWithKey:@"displayName" andValue:displayName];
```

Publicメソッド

delegate

コールバックの委譲を設定します。このメソッドは、onDataPostedメソッドと連携して機能します。

```objective-c
@property (nonatomic, weak) id <BlueKaiOnDataPostedListener> delegate;

devMode

開発者モード(YESまたはNO)を設定します。

```objective-c
@property (nonatomic) BOOL devMode;
```

isLoggingEnabled

SDKリクエストのロギング(YESまたはNO)を使用可能にします。

```objective-c
@property (nonatomic) BOOL isLoggingEnabled;
```

NSString

サイトIDを設定します。

```objective-c
@property (nonatomic) NSString *siteId;

コール元アプリケーションのバージョン番号を設定します。

```objective-c
@property (nonatomic) NSString *appVersion;

UIViewController

データ投稿ステータスの通知を取得するようViewControllerインスタンスを設定します。

```objective-c
@property (nonatomic) UIViewController *viewController;
```

useHttps

HTTPS転送プロトコルを有効化します。回避する方法がない場合を除いて、HTTPSを使用する必要があります。

```objective-c
@property (nonatomic) BOOL useHttps;
```

メソッド

initDirectAutoIdfaEnabledWithSiteId

Appleが提供するNSURLConnectionオブジェクトを使用して、直接接続に必要な引数を含むSDKインスタンスを作成します。ユーザーがブロックしないかぎり、IDFAが自動的に取得されます。

```objective-c
- (id)initDirectAutoIdfaEnabledWithSiteId:(NSString *)siteID withAppVersion:(NSString *)version withDevMode:(BOOL)devMode;
```

initDirectWithSiteId

Appleが提供するNSURLConnectionオブジェクトを使用して、直接接続に必要な引数を含むSDKのインスタンスを作成します。IDFAは手動で指定します。

```objective-c
- (id)initDirectWithSiteId:(NSString *)siteID withAppVersion:(NSString *)version withIdfa:(NSString *)idfa withDevMode:(BOOL)devMode;
```

resume

コール元のアプリケーションが再開するか、フォアグラウンドになった後に、Oracle Data Cloudプロセスを再開します。コール元アクティビティのフォアグラウンドのonResume ()メソッドで使用します。

```objective-c
- (void)resume
```

setOptInPreference

ユーザー・オプトインまたはオプトアウトのプリファレンスを設定します。

```objective-c - (void) setOptInPreference:(BOOL)OptIn

```

updateWithDictionary

NSDictionaryのキー/値文字列を設定し、Oracle Data Cloudサーバーに送信します。

```objective-c
- (void)updateWithDictionary:(NSDictionary *)dictionary
```

updateWithKey

キー/値文字列を設定し、Oracle Data Cloudサーバーに送信します。

```objective-c
- (void)updateWithKey:(NSString *)key andValue:(NSString *)value
```

onDataPosted

データがサーバーに投稿されたときに、アプリがSDKからコールバックを受信できるようにします。

```objective-c
- (void)onDataPosted:(BOOL)status;
```

データの分類

iOS SDKをアプリにインテグレートしたら、モバイル・アプリから抽出するページとユーザーの属性をOracle Data Cloudプラットフォームのカテゴリにマッピングする分類ルールを作成する必要があります。(カテゴリは、同じ属性を持つユーザーのコレクションです。)

Oracle Data Cloudプラットフォームに用意されているTaxonomy Managerを使用して、データ・マップ、カテゴリおよびルールを作成します。モバイル・データは、これらに基づいてタクソノミ内で編成されます。データ・マップには、次の情報が含まれている必要があります。

  • phintで使用されるキーのセット
  • 各キーの候補値のセット。必要に応じて、これらの値を判読可能なカテゴリ名に関連付けます
  • キーのセット間の階層関係(存在する場合)

たとえば、ユーザーが購入の意思を示した自動車のメーカーおよびモデルを収集する、自動車購入サイト(myAutos.com)を考えます。makeノードのキーと値のペアの構文は、MA100=valueとなります。このノードのキーと値のペアの例を次に示します。

  • MA100=Honda
  • MA100=Acura
  • MA100=Toyota

modelノードのキーと値のペアの構文は、MA110=valueとなります。前述の例のmakeノードに基づき、Modelノードのキーと値のペアの例は次のようになります。

  • MA110=Accord
  • MA110=Civic
  • MA110=TL
  • MA110=TSX
  • MA110=Corolla
  • MA110=Camry

ブランドの値がエンコードされている(たとえば、Honda、AcuraおよびToyotaではなく23098、21409、57983を渡す)場合、プラットフォームではこれらのエンコードされた値に対する、判読可能なカテゴリ名を必要とします。たとえば、次の変換を使用できます。

  • MA100=23098 > Honda
  • MA100=21409 > Acura
  • MA100=57983 > Toyota

このサイトには、次のデータ・マップを作成できます。

キー キーの解釈 値の変換(カテゴリ名)
MA100 Make Honda Honda
MA100 Make 21409 Acura
MA100 Make 57983 Toyota
MA110 Make > Model Accord Honda > Accord
MA110 Make > Model 89065 Honda > Civic
MA110 Make > Model TL Acura > TL
MA110 Make > Model TSX Acura > TSX
MA110 Make > Model Corolla Toyota > Corolla
MA110 Make > Model Camry Toyota > Camry

データ収集のモニタリング

アプリによりOracle Data Cloudプラットフォームへのデータの転送が開始されたら、データが収集されて正しく分類されていること、および想定した量のインベントリが生成されていることを確認する必要があります。データ収集をモニターするには、これらのステップに従います:

  1. モバイル・アプリによりプラットフォームがコールされているかどうかを確認します。Oracle Data CloudプラットフォームのSite Hitsレポートを使用して、アプリからコールが送信されていることを確認します。
  2. インベントリが増加しているかどうかを確認します。Inventory Trendレポートを使用して、カテゴリ当たりのインベントリの量が毎日増え続けていることを確認します。
  3. 30日間のインベントリを確認します。Oracle Data Cloudプラットフォームのオーディエンス・ページを使用して、現在の構成に基づく、カテゴリ内の一意のユーザーの推定数を表示します。カテゴリAPIを使用して、一意のユーザーのインベントリをプログラマティックに確認できます。