On this page

For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.

iOS SDK

これは、Amplitude Analytics iOS SDKの公式ドキュメントです。

iOS 16以降でキャリア追跡はサポートされていません

SDKは serviceSubscriberCellularProvidersおよび CTCarrierを使用してキャリア情報を取得しますが、これらはiOS 16以降、Appleによって非推奨とされ、代わりの手段も提供されていません。AmplitudeはAppleのアップデートを追跡し、Appleが代替手段をリリースした際にキャリア追跡を再度有効にします。

SDKをインストールする

iOS SDKをCocoaPods、Carthage、またはSwift Package Managerを使ってインストールしてください。

  1. Podfileに依存関係を追加します。
bash
pod '@{{packageName}}', '~> @{{version}}'
  1. プロジェクトディレクトリで pod install を実行して依存関係をインストールします。

SDKの初期化

計装を行う前にSDKを初期化してください。 Amplitudeプロジェクト用のAPIキーが必要です。

YourAppAppDelegate.mファイルのapplication:didFinishLaunchingWithOptions:メソッドでSDKを初期化します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Enable sending automatic session events
    [Amplitude instance].defaultTracking.sessions = YES;
    // Initialize SDK
    [[Amplitude instance] initializeApiKey:@"API_KEY"];
    // Set userId
    [[Amplitude instance] setUserId:@"userId"];
    // Log an event
    [[Amplitude instance] logEvent:@"app_start"];
    return YES;
}

SDK を設定する

EU域内のデータレジデンシー

バージョン8.5.0以降では、クライアントを初期化した後にサーバーゾーンを設定してAmplitudeのEUサーバーにデータを送信できるようになりました。 SDKは、設定されている場合にサーバーゾーンに基づいてデータを送信します。サーバゾーン設定は、動的設定もサポートしています。

以前のバージョンの場合、クライアントを初期化した後にserverURLプロパティを設定してください。

EUデータレジデンシーについては、Amplitude EU内にプロジェクトを設定してください。 Amplitude EUから提供されたAPIキーを使用してSDKを初期化します。

// For versions starting from 8.5.0
// No need to call setServerUrl for sending data to Amplitude's EU servers
[[Amplitude instance] setServerZone:AMPServerZone.EU];
// For earlier versions
[[Amplitude instance] setServerUrl: @"https://api.eu.amplitude.com"];

イベントを送信

イベントは、ユーザーがアプリケーションとどのように対話するかを表します。 たとえば、「Button Clicked」は、メモしておきたいアクションの1つです。

[[Amplitude instance] logEvent:@"Button Clicked"];

プロパティ付きのイベントを送信

イベントにはプロパティも含めることができ、これによりイベントに関するより多くのコンテキストが得られます。 たとえば、「ホバー時間」は、「ボタンクリック」に関連するイベントプロパティです。

NSMutableDictionary *eventProperties = [NSMutableDictionary dictionary];
[eventProperties setValue:@"100ms" forKey:@"Hover Time"];
[[Amplitude instance] logEvent:@"Button Clicked" withEventProperties:eventProperties];

ユーザープロパティ

ユーザーのプライバシー

プライバシー規約に違反する可能性のあるユーザーデータを追跡しないでください。

ユーザープロパティは、ユーザーがアプリ内でアクションを実行した時点でのユーザーの状況を把握するのに役立ちます。 たとえば、デバイスの詳細、好み、言語などについて学ぶことができます。

Amplitude-iOS のAMPIdentityクラスがこれらの機能を管理しています。 Identifyは、イベントを送信することなく、特定のユーザーのユーザープロパティを設定します。SDKは、個々のユーザープロパティに対する次の操作をサポートしています:setsetOnceunsetaddappendprependpreInsertpostInsert、およびremove。Identify インターフェイスを使用して操作を宣言します。 単一の Identify オブジェクト内で複数の操作をチェーンできます。

オブジェクトをAMPIdentifyAmplitudeクライアントに渡してサーバーに送信します。リリースv8.15.0以降、SDKはset操作を含むidentifyイベントをバッチ処理し、より少ないイベント数で送信するようになりました。この変更は、セット操作の結果に影響を与えません。setIdentifyUploadPeriodSecondsを使用して、バッチ処理された識別イベントのフラッシュ間隔を管理します。

ユーザープロパティを設定する

set は、ユーザー プロパティの値を設定します。 また、複数のidentifyコールを連結することもできます。

AMPIdentify *identify = [[[AMPIdentify identify] set:@"gender" value:@"female"] set:@"age"
    value:[NSNumber numberWithInt:20]];
[[Amplitude instance] identify:identify];

ユーザープロパティを1回設定する

setOnce は、ユーザープロパティの値を 1 回だけ設定します。 SDKはsetOnceを使用した後続の呼び出しを無視します。

AMPIdentify *identify1 = [[AMPIdentify identify] setOnce:@"sign_up_date" value:@"2015-08-24"];
[[Amplitude instance] identify:identify1];
AMPIdentify *identify2 = [[AMPIdentify identify] setOnce:@"sign_up_date" value:@"2015-09-14"];
[[Amplitude instance] identify:identify2]; // Is ignored

ユーザープロパティの増分

add は、ユーザープロパティを何らかの数値で増分します。 ユーザープロパティに値がまだ設定されていない場合、SDKは増分する前に0それを初期化します。

AMPIdentify *identify = [[[AMPIdentify identify] add:@"karma" value:[NSNumber numberWithFloat:0.123]]
    add:@"friends" value:[NSNumber numberWithInt:1]];
[[Amplitude instance] identify:identify];

ユーザープロパティから値を削除する

removeは、ユーザープロパティから1つまたは複数の値を削除します。ユーザープロパティに項目が存在しない場合、SDKは何も削除しません。

objc
NSMutableArray *array = [NSMutableArray array];
[array addObject:@"some_string"];
[array addObject:[NSNumber numberWithInt:56]];
AMPIdentify *identify = [[[AMPIdentify identify] remove:@"ab-tests" value:@"new-user-test"]
    remove:@"some_list" value:array];
[[Amplitude instance] identify:identify];

複数のユーザープロパティを設定する

複数のユーザープロパティを一度に設定する場合の省略形としてsetUserPropertiesを使用します。このメソッドは、Identify.set および identifyのラッパーです。

NSMutableDictionary *userProperties = [NSMutableDictionary dictionary];
[userProperties setValue:@"VALUE" forKey:@"KEY"];
[userProperties setValue:@"OTHER_VALUE" forKey:@"OTHER_KEY"];
[[Amplitude instance] setUserProperties:userProperties];

ユーザープロパティで配列を使用する

配列を直接設定するか、append または を使用して配列を生成します。

NSMutableArray *colors = [NSMutableArray array];
[colors addObject:@"rose"];
[colors addObject:@"gold"];
NSMutableArray *numbers = [NSMutableArray array];
[numbers addObject:[NSNumber numberWithInt:4]];
[numbers addObject:[NSNumber numberWithInt:5]];
AMPIdentify *identify = [[[[AMPIdentify identify] set:@"colors" value:colors] append:@"ab-tests"
    value:@"campaign_a"] append:@"existing_list" value:numbers];
[[Amplitude instance] identify:identify];

ユーザープロパティデータを追加または先頭に追加する

  • append は、ユーザー プロパティ配列に 1 つまたは複数の値を追加します。
  • prepend は、ユーザープロパティの前に 1 つまたは複数の値を付加します。

ユーザープロパティに値がまだ設定されていない場合、SDKは新しい値を追加する前にそのプロパティを空のリストに初期化します。ユーザープロパティに既存の値があり、それがリストでない場合、SDK はそれをリストに変換し、新しい値を追加します。

appendprepend は、重複のチェックを行いません。重複チェックについては、preInsert およびpostInsert を参照してください。

NSMutableArray *array = [NSMutableArray array];
[array addObject:@"some_string"];
[array addObject:[NSNumber numberWithInt:56]];
AMPIdentify *identify = [[[AMPIdentify identify] append:@"ab-tests" value:@"new-user-test"]
    append:@"some_list" value:array];
[[Amplitude instance] identify:identify];

プレインサートとポストインサート

  • preInsert は、ユーザープロパティ配列に値がまだ存在しない場合に、その値をユーザープロパティ配列の先頭に挿入します。
  • postInsert は、ユーザープロパティ配列に値がまだ存在しない場合に、その値をユーザープロパティ配列の末尾に挿入します。

ユーザープロパティが存在しない場合、SDKは新しい値を事前に挿入する前にそのプロパティを空のリストに初期化します。ユーザープロパティに既存の値がある場合、SDKは何も挿入しません。

NSMutableArray *array = [NSMutableArray array];
[array addObject:@"some_string"];
[array addObject:[NSNumber numberWithInt:56]];
AMPIdentify *identify = [[[AMPIdentify identify] preInsert:@"ab-tests" value:@"new-user-test"]
    preInsert:@"some_list" value:array];
[[Amplitude instance] identify:identify];

ユーザープロパティを削除する

clearUserProperties現在のユーザーのすべてのユーザープロパティを削除します。

このアクションは元に戻すことができません。

ユーザープロパティをクリアすると、Amplitudeはワイプ前のユーザーのユーザープロパティ値を将来のイベントに同期できなくなります。

[[Amplitude instance] clearUserProperties];

ユーザープロパティから値を削除する

remove は、ユーザー プロパティから既存の値を削除します。 ユーザープロパティに項目が存在しない場合、SDKは何も削除しません。

NSMutableArray *array = [NSMutableArray array];
[array addObject:@"some_string"];
[array addObject:[NSNumber numberWithInt:56]];
AMPIdentify *identify = [[[AMPIdentify identify] remove:@"ab-tests" value:@"new-user-test"]
    remove:@"some_list" value:array];
[[Amplitude instance] identify:identify];

デフォルトイベントを追跡

リリース v8.17.0 以降、SDK はより多くのデフォルトイベントを追跡できるようになりました。 以下のイベントを自動的に追跡するようにSDKを設定します。

  • セッション。
  • アプリケーションのライフサイクル。
  • スクリーンビュー。
  • ディープリンク。
  • defaultTracking.sessions
    • タイプ:オプション。boolean
    • デフォルト値NO
    • 説明
      • セッショントラッキングを有効にします。この設定は trackingSessionEvents に代わるものです。 値が YES の場合、Amplitude はセッション開始イベントとセッション終了イベントを追跡します。
      • 詳細については、『 トラッキング セッション 』を参照してください。
  • defaultTracking.appLifecycles
    • タイプ:オプション。boolean
    • デフォルト値NO
    • 説明
      • アプリケーションライフサイクルイベントの追跡を有効にします。値が YES の場合、Amplitude はインストール済みアプリケーション、アップデート済みアプリケーション、オープン済みアプリケーション、アプリケーション関連のイベントを追跡します。
      • 追跡されるイベントプロパティには、[Amplitude] Version[Amplitude] Build[Amplitude] Previous Version[Amplitude] Previous Build、および [Amplitude] From Background が含まれます。
      • 詳細については、「アプリケーション ライフサイクルの追跡」を参照してください。
  • defaultTracking.screenViews
    • タイプ:オプション。boolean
    • デフォルト値NO
    • 説明
      • スクリーンビューの追跡を有効にします。 値が YES の場合、Amplitude は画面表示イベントを追跡します。
      • 追跡されるイベントプロパティには次のものがあります:[Amplitude] Screen Name
      • 詳細については、スクリーン ビューのトラッキングを参照してください。
  • defaultTracking.deepLinks
    • タイプ:オプション。boolean
    • デフォルト値NO
    • 説明
      • ディープリンク トラッキングを有効にします。 値が YES の場合、Amplitude はディープリンクがオープンしたイベントを追跡します。 このイベントを追跡するには、引き続き continueUserActivity または openURL を手動で呼び出す必要があります。
      • 追跡されるイベントプロパティには、[Amplitude] Link URL および [Amplitude] Link Referrerがあります。
      • 詳細については、「ディープリンクの追跡」を参照してください。

次のコードサンプルを使用して、デフォルトのイベントトラッキングを有効にします。

[Amplitude instance].defaultTracking = [AMPDefaultTrackingOptions initWithAllEnabled];
[[Amplitude instance] initializeApiKey:@"API_KEY"];

次のコードサンプルを使用して、デフォルトのイベントトラッキングを無効にします。

[Amplitude instance].defaultTracking = [AMPDefaultTrackingOptions initWithNoneEnabled];
[[Amplitude instance] initializeApiKey:@"API_KEY"];

デフォルトのイベントトラッキングでは、追跡するイベントを定義するオプションが使用できます。

[Amplitude instance].defaultTracking = [AMPDefaultTrackingOptions initWithSessions:YES
                                                                        appLifecycles:NO
                                                                            deepLinks:NO
                                                                        screenViews:NO];
[[Amplitude instance] initializeApiKey:@"API_KEY"];

セッションを追跡する

セッションイベントの追跡を開始するには、defaultTracking.sessionstrue に設定します。次のコードサンプルを参照してください。

[Amplitude instance].defaultTracking = [AMPDefaultTrackingOptions initWithSessions:YES
                                                                        appLifecycles:NO
                                                                            deepLinks:NO
                                                                        screenViews:NO];
[[Amplitude instance] initializeApiKey:@"API_KEY"];

セッション追跡の詳細については、「ユーザーセッション」を参照してください。

trackingSessionEvents は廃止されました。 代わりにdefaultTracking.sessionsを使用してください。

アプリケーションのライフサイクルを追跡

アプリケーションライフサイクルイベントの追跡を開始するには、defaultTracking.appLifecyclestrue に設定します。次のコードサンプルを参照してください。

[Amplitude instance].defaultTracking = [AMPDefaultTrackingOptions initWithSessions:NO
                                                                      appLifecycles:YES
                                                                          deepLinks:NO
                                                                        screenViews:NO];
[[Amplitude instance] initializeApiKey:@"API_KEY"];

この設定を有効にした後、Amplitudeは以下のイベントを追跡します:

  • [Amplitude] Application Installed: は、インストール後にユーザーが初めてアプリケーションを開いたときに発火します。 SDK はUIApplicationDidFinishLaunchingNotification通知を監視します。
  • [Amplitude] Application Updated: ユーザーがアプリケーションを更新した後にアプリケーションを開いたときに起動します。SDK はUIApplicationDidFinishLaunchingNotification通知を監視します。
  • [Amplitude] Application Opened: ユーザーがアプリケーションを起動するか、最初に開いた後にアプリケーションをフォアグラウンドに移動したときに発生します。SDK は UIApplicationDidFinishLaunchingNotificationまたは UIApplicationWillEnterForegroundNotificationの通知を監視します。
  • [Amplitude] Application Backgrounded: ユーザーがアプリケーションをバックグラウンドに移行したときに発生します。SDK はUIApplicationDidEnterBackgroundNotification通知を監視します。

画面ビューを追跡

スクリーンビューイベントの追跡を開始するには、defaultTracking.screenViewstrue に設定します。次のコードサンプルを参照してください。

[Amplitude instance].defaultTracking = [AMPDefaultTrackingOptions initWithSessions:NO
                                                                        appLifecycles:NO
                                                                            deepLinks:NO
                                                                        screenViews:YES];
[[Amplitude instance] initializeApiKey:@"API_KEY"];

この設定を有効にした後、Amplitudeはスクリーン名プロパティを使用して[Amplitude] Screen Viewedイベントを追跡します。SDK は、viewDidAppearメソッドスウィズリングを使用してコントローラクラスのメタデータからプロパティ値を読み取ります。

ディープリンクを追跡する

ディープリンクイベントのトラッキングを開始するには、defaultTracking.deepLinkstrueに設定します。次のコードサンプルを参照してください。

// Enable tracking deep links.
[Amplitude instance].defaultTracking = [AMPDefaultTrackingOptions initWithSessions:NO
                                                                        appLifecycles:NO
                                                                            deepLinks:YES
                                                                        screenViews:NO];
[[Amplitude instance] initializeApiKey:@"API_KEY"];
// Call helper method to track, e.g., in `onOpenURL` callback.
[[Amplitude instance] openURL:url];
[[Amplitude instance] continueUserActivity:activity];

この設定を有効にすると、AmplitudeはURLとリファラ情報とともに[Amplitude] Deep Link Openedイベントを追跡します。ディープリンクを追跡するには、引き続き手動で continueUserActivity または openURL を呼び出す必要があります。

ユーザーグループを設定する

Amplitudeでは、ユーザーをグループに割り当てたり、それらのグループに対して「ユニーク数による集計」などのクエリを実行したりすることができます。 グループの少なくとも1人のメンバーが特定のイベントを実行した場合、そのグループはカウントに含まれます。

たとえば、「orgId」を使用して、ユーザーが所属する組織に基づいてユーザーをグループ化したい場合などです。 Joeは'orgId' '10'に属し、Sueは'orgId' '15'に属しています。SueとJoeはどちらも特定のイベントを実行します。 イベントセグメンテーションチャートでその組織をクエリできます。

グループを設定する際には、groupTypegroupNameを定義してください。 前の例では、「orgId」は groupType であり、「10」と「15」は groupName の値です。 groupTypeのもう1つの例は'sport'で、groupNameの値には'tennis'や'baseball'などがあります。

グループを設定すると、groupType:groupNameもユーザープロパティとして設定されます。これは、そのユーザーのgroupTypeに設定されている既存のgroupName値と、対応するユーザープロパティ値を上書きします。groupTypeは文字列です。ユーザーが複数のグループに属していることを示すために、groupNameは文字列または文字列の配列のいずれかにすることができます。

Joeは'orgID'に属しており、groupNameは15です。Joeは"sport"にも属しており、groupNamesは"tennis"と"soccer"です。コードは次のようになります。

[[Amplitude instance] setGroup:@"orgId" groupName:[NSNumber numberWithInt:15]];
[[Amplitude instance] setGroup:@"sport" groupName:[NSArray arrayWithObjects: @"tennis", @"soccer", nil]];

また、logEventWithGroups を使用してイベントレベルのグループを設定することもできます。 グループ指定はログに記録する特定のイベントにのみ適用され、setGroupで明示的に設定しない限り、ユーザーには保持されません:

NSDictionary *eventProperties = [NSDictionary dictionaryWithObjectsAndKeys: @"value", @"key", nil];
NSDictionary *groups = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:10],
    @"orgId", @"soccer", @"sport", nil];
[[Amplitude instance] logEvent:@"initialize_game" withEventProperties:eventProperties withGroups:groups];

グループ識別

Group Identify API を使用して、特定のグループのプロパティを設定または更新します。これらの更新プログラムは今後のイベントにのみ影響します。

このgroupIdentifyWithGroupTypeメソッドは、グループタイプの文字列パラメータ、グループ名のオブジェクトパラメータ、およびグループに適用されるIdentifyオブジェクトを受け入れます。

NSString *groupType = @"plan";
NSObject *groupName = @"enterprise";
AMPIdentify *identify = [[AMPIdentify identify] set:@"key" value:@"value"];
[[Amplitude instance] groupIdentifyWithGroupType:groupType groupName:groupName groupIdentify:identify];

オプションの outOfSession ブール値入力を groupIdentifyWithGroupType の 4 番目の引数として追加できます。

収益の追跡

AMPRevenue のインスタンスは、収益トランザクションを保存し、Amplitude のイベントセグメンテーションおよびレベニューLTV チャートで使用される特別な収益プロパティ (revenueType など) を定義します。各インスタンスを Amplitude.logRevenueV2 に渡します。 これにより、Amplitudeは収益に関連するデータを自動的に表示できます。

ユーザーからの収益を追跡するには、logRevenueV2ユーザーが収益を上げるたびに電話をかけます。 次に例を示します。

AMPRevenue *revenue = [[[AMPRevenue revenue] setProductIdentifier:@"productIdentifier"] setQuantity:3];
[revenue setPrice:[NSNumber numberWithDouble:3.99]];
[[Amplitude instance] logRevenueV2:revenue];

logRevenueV2 を呼び出すと、プラットフォーム内で最大 2 種類のイベントが生成されます。

  • [Amplitude] Revenue: Amplitudeは検証が有効かどうかに関係なく、すべての収益イベントについてこのイベントを記録します。
  • [Amplitude] Revenue (Verified/Unverified): これらの収益イベントには実際の$revenueプロパティが含まれています。

Amplitudeが未加工データでこれらのクライアント側の収益イベントに与えるデフォルトの名前を変更することはできませんが、表示名を変更することはできます。 収益の追跡に関する詳細は、ヘルプセンターをご覧ください。

Amplitudeは通貨換算をサポートしていません。 送信する前に、すべての収益データを選択した通貨に正規化してください。

各収益イベントには使用可能なフィールドがあり、各フィールドには対応するsetメソッド(pricesetPriceなど)があります。フィールドの完全なリストについては、 の API ドキュメントAMPRevenueを参照してください。

logEventと同様に、logRevenueV2への各呼び出しにイベントプロパティを追加できます。ただし、これらのイベントプロパティはイベントセグメンテーションチャートにのみ表示され、収益チャートには表示されません。

価格は負数にすることができます。これは、損失した収益(払い戻しやコストなど)を追跡するのに役立ちます。

高度なトピック

ユーザーセッション

セッションとは、ユーザーがアプリをフォアグラウンドに置いている期間のことです。 同じセッション内で記録されたイベントは、同じsession_idを共有します。 SDKはセッションを自動的に処理するため、startSession()またはendSession() などのAPIを手動で呼び出す必要はありません。

セッションが延長される時間枠を調整するには、変数 minTimeBetweenSessionsMillis を変更します。

Amplitudeはイベントをセッションごとにグループ化します。 セッションは、開始時刻と終了時刻を持つユーザーアクティビティの1つの期間を表します。 SDK ごとにセッションを追跡する方法が異なります。これは、プラットフォームの要件に応じて異なります。 SDK 内でセッションの最小期間を設定します。

[Amplitude instance].defaultTracking.sessions = YES;
[Amplitude instance].minTimeBetweenSessionsMillis = 10 * 60 * 1000; // 10 minutes
[[Amplitude instance] initializeApiKey:@"API_KEY"];

イベントをセッション外として記録することもできます。 セッション外イベントのsession_id は -1 を持ち、現在のセッションの一部としてカウントされません。つまり、現在のセッションを延長しません。 これは、たとえばプッシュ通知によってトリガーされたイベントを記録する場合に役立ちます。 logEvent を呼び出す際に、入力パラメータ outOfSession を true に設定することで、イベントをセッション外として記録します。

[[Amplitude instance] logEvent:@"EVENT_TYPE" withEventProperties:nil outOfSession:YES];

識別イベントをセッション外として記録することもできます。 これは、バックグラウンドでユーザープロパティを更新し、新しいセッションを開始したくない場合に便利です。identifyを呼び出す際は、入力パラメータoutOfSessiontrueに設定してください。

AMPIdentify *identify = [[AMPIdentify identify] set:@"key" value:@"value"];
[[Amplitude instance] identify:identify outOfSession:YES];

ヘルパーメソッドgetSessionIdを使用して、現在の値を取得できますsessionId

long sessionId = [[Amplitude instance] getSessionId];

カスタムユーザーIDを設定する

アプリに独自のログインシステムがあり、ユーザーを追跡したい場合は、setUserIdいつでも呼び出してください。

[[Amplitude] instance] setUserId:@"USER_ID"];

ユーザーIDを引数としてinit呼び出しに追加することもできます。

[[Amplitude] instance] initializeApiKey:@"API_KEY" userId:@"USER_ID"];

Amplitudeでは、それぞれの一意のユーザーIDが一意のユーザーであるため、変更される可能性があるユーザーIDをユーザーに割り当てないでください。 詳細については、「ユニークユーザーの追跡」を参照してください。

デバッグログ記録

デフォルトでは、SDKは重大なエラーのみをコンソールに記録します。iOSでデバッグログを有効にするには、調査したいObjective-Cファイルの先頭にあるAMPLITUDE_DEBUGを0から1に変更します。SDKはデフォルトでエラーメッセージを出力します。エラーログを無効にするには、Amplitude.m内のAMPLITUDE_LOG_ERRORSを1から0に変更します。

ログアウト済みユーザーと匿名ユーザー

Amplitudeはユーザーデータを統合するため、既知のuserIdまたはdeviceIdに関連付けられたイベントは、既存のユーザーに紐付けられます。

ユーザーがログアウトした場合、Amplitudeはそのユーザーのログアウト後のイベントを、そのユーザーのレコードに統合することができます。 この動作を変更して、代わりに匿名ユーザーにこれらのイベントを記録することができます。

匿名ユーザーにイベントをログに記録するには:

  1. userIdをnullに設定します。
  2. 新しいdeviceIdを生成します。

現在のユーザーまたはデバイスから送信されたイベントは、Amplitudeでは新しいユーザーとして表示されます。 注: この方法を実行すると、2人のユーザーが同じデバイスを使用していたことを確認できなくなります。

[[Amplitude instance] setUserId:nil]; // not string nil
[[Amplitude instance] regenerateDeviceId];

追跡を無効にする

デフォルトでは、iOS SDKはcarriercitycountryip_addresslanguageplatformなどのいくつかのユーザープロパティを追跡します。

AMPTrackingOptionsインターフェイスを使用して、個々のフィールドをカスタマイズしたり無効にしたりできます。

AMPTrackingOptionsオブジェクトに対する各操作は同じインスタンスを返すため、複数の操作を連結できます。

AMPTrackingOptionsインターフェイスを使用するには、まずヘッダーを含めます:

objc
#import "AMPTrackingOptions.h"

apiKeyを使用して SDK を初期化する前に、設定を使用してAMPTrackingOptionsインスタンスを作成し、SDK インスタンスに設定してください。

AMPTrackingOptions *options = [[[[AMPTrackingOptions options] disableCity] disableIPAddress] disablePlatform];
[[Amplitude instance] setTrackingOptions:options];

各フィールドの追跡を個別に制御することができ、各フィールドには対応するメソッドがあります (例: disableCountry, disableLanguage)。

AMPTrackingOptions このオプションは、SDK が新しく作成されたプロジェクト(データをまだ送信していないプロジェクト)のデフォルトプロパティを追跡することを防ぐだけです。 既存のデータを含むプロジェクトをお持ちで、デフォルトのプロパティの収集を停止したい場合は、Amplitudeコミュニティでヘルプを取得してください。 Amplitudeは既存データを削除しません。

キャリア

Amplitudeは、CTTelephonyNetworkInfoを使用してユーザーのモバイルキャリアを決定します。この場合、simの登録済みオペレーターが返されます。

COPPA制御

IDFA、IDFV、都市、IPアドレス、位置情報の追跡に関するCOPPA(児童オンラインプライバシー保護法)の制限をすべて一度に有効または無効にできます。13 歳未満の子供から情報を求めるアプリは、COPPA に準拠する必要があります。

[[Amplitude instance] enableCoppaControl];

広告主ID

広告主ID(IDFAとも呼ばれます)は、iOSおよびGoogle Playストアが提供する固有の識別子です。IDFAはユーザーのデバイスだけでなく、すべての人に固有のものであるため、IDFAはモバイルアトリビューションに役立ちます。

モバイルアトリビューションとは、モバイルアプリのインストールが、いずれの元ソース(例:広告キャンペーンやアプリストアの検索など)に起因するかを特定することです。

モバイルアプリはIDFAを要求するには権限を必要とし、子供をターゲットにしたアプリはまったく追跡できません。IDFAが利用できない場合は、IDFVやデバイスID、または電子メールログインシステムの使用を検討してください。

amplitude.adSupportBlock = ^{
    return [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
};

プロジェクトに AdSupport.framework を追加するのを忘れないでください。

IDFAをデバイスIDとして設定する

AmplitudeはデフォルトでIDFVをデバイスIDとして使用しますが、この動作を変更できます。 IDFAを取得するためのロジックを設定した後、useAdvertisingIdForDeviceId APIを呼び出して、IDFAをdeviceIdとして設定します。

デバイスIDのライフサイクル

SDK はデバイス ID を次の順序で初期化します。 SDKはデバイスIDを最初に検出した有効な値に設定します:

  1. SQLite データベースから取得したデバイス ID。
  2. IDFA useAdvertisingIdForDeviceIdが true であり、disableIDFA() を呼び出していない場合。
  3. disableIDFV()を呼び出さなかった場合の IDFV。
  4. ランダムに生成された UUID。

1人のユーザーが複数のデバイスを使用

1人のユーザーが複数のデバイスを所有することができ、それぞれが異なるデバイスIDを持つことができます。一貫性を保つために、これらのすべてのデバイスで一貫したユーザーIDを設定してください。デバイスIDは異なっていても、Amplitudeはそれらを単一のAmplitude IDにマージできるため、それらをユニークなユーザーとして識別できます。

新しいデバイスへの転送

ユーザーが新しいデバイスに切り替えると、複数のデバイスに同じデバイスIDが割り当てられる場合があります。新しいデバイスに移行する際、ユーザーは多くの場合、他の関連データと一緒にアプリケーションを移行します。 転送される特定のコンテンツは、アプリケーションによって異なります。 通常、アプリに関連付けられたデータベースとファイルディレクトリを含みます。含まれている正確なアイテムは、アプリのデザインと開発者の選択によって異なります。 データベースやファイルディレクトリが1つのデバイスから別のデバイスにバックアップされた場合でも、その中に保存されているデバイスIDは引き続き存在することがあります。その結果、SDK が初期化中にデバイス ID を取得すると、異なるデバイスが同じデバイス ID を使用することになる可能性があります。

デバイスIDを取得する

ヘルパーメソッド getDeviceId() を使用して、現在の deviceId の値を取得できます。

NSString *deviceId = [[Amplitude instance] getDeviceId];

カスタムデバイスID

setDeviceId()を使用して、新しいデバイスIDを割り当てることができます。 カスタムデバイスIDを設定する場合は、値が十分に一意であることを確認してください。AmplitudeはUUIDの使用を推奨しています。

[[Amplitude instance] setDeviceId:@"DEVICE_ID"];

位置情報追跡

AmplitudeはデフォルトでユーザーイベントのIPを場所に変換します(GeoIP検索)。 アプリ独自の追跡ソリューションまたはユーザーデータがこの情報を上書きする場合があります。

キャリア情報

Amplitude-iOSは、通信事業者情報をレポートするのに役立ちます。

SDKがデバイスからこの情報をレポートできるようにするには、依存関係としてCoreTelephony.frameworkを追加してください。

動的な設定

iOS SDKを使用すると、動的構成を使用するようにアプリを設定できます。この機能は、アプリユーザーの所在地に基づいて最適なサーバー URL を自動的に検出します。

これを使用するには、useDynamicConfigフラグを有効にします。

  • 独自のプロキシサーバーを使用しており、apiEndPoint APIを使用している場合は、動的設定をオフのままにしてください。
  • 中国本土にユーザーがいる場合、Amplitudeは動的設定の使用を推奨しています。
  • デフォルトでは、この機能はAmplitudeの米国サーバーのサーバーURLを返します。 AmplitudeのEUサーバーにデータを送信する必要がある場合は、setServerZoneを使用してEUゾーンに設定してください。
[Amplitude instance].useDynamicConfig = YES;

SSL ピン留め

SSLピン留めはクライアント側のテクニックで、SSLハンドシェイク後にサーバー証明書を再検証することで中間者攻撃を防止するのに役立ちます。SSL ピン留めを使用するのは、特別な理由がある場合に限ってください。 SSLピンニングが有効になっている製品を発送する前に、サポートにお問い合わせください。

CocoaPodsを使用してSDKをインストールした場合、次のポストインストールフックを追加して、Podfileからプリプロセッサマクロを有効にしてください。

ruby
post_install do |installer_representation|
   installer_representation.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
         config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'AMPLITUDE_SSL_PINNING=1']
      end
   end
end

ソースまたはSwiftパッケージマネージャーから直接SDKをインストールした場合、次のプリプロセッサマクロを追加してSSLピン留めを有効にします。プリプロセッサ マクロを追加する方法については、この StackOverflow の投稿を参照してください。

bash
AMPLITUDE_SSL_PINNING=1

ユーザーを追跡から除外する

ユーザーはトラッキングを完全にオプトアウトできます。つまり、Amplitudeはユーザーのイベントや閲覧履歴を一切追跡しません。setOptOutはユーザーのプライバシー保護要求に応える方法を提供します。

[[Amplitude instance] setOptOut:YES]; // disables instrumentation
[[Amplitude instance] setOptOut:NO]; // enables instrumentation

tvOS と watchOS

この SDK は tvOS および watchOS アプリと連携します。 まずは、iOSアプリと同じ設定手順に従ってください。

tvOS アプリには永続的なストレージがないため (一時的なストレージしかありません)、tvOS の場合、SDK はイベントをログに記録するとすぐにイベントをアップロードします。

これは、tvOS では eventUploadThreshold のデフォルト値が 1 になることを意味します。Apple TV デバイスは通常安定したインターネット接続を備えているため、イベントをすぐにアップロードすることは理にかなっています。

iOS のバッチ処理動作に戻すには、eventUploadThreshold を変更してください (iOS のデフォルト値は 30)。

objc
[[Amplitude instance] setEventUploadThreshold:30];

iOS拡張機能

このSDKはiOS拡張機能での追跡を可能にします。 iOS拡張機能でトラッキングを設定するには、同じ設定手順に従いますが、application:didFinishLaunchingWithOptions:ではなく拡張機能のviewDidLoadメソッドでSDKを初期化します。

主な注意点:

  • システムは拡張機能が開かれるたびにviewDidLoadメソッドを呼び出します。これは、SDKのinitializeApiKeyメソッドが毎回実行されることを意味します。これは安全です。SDKは最初のコール以降のコールを無視するためです。初期化をdispatch_onceブロックのようなもので保護できます。
  • Amplitudeのセッションは、アプリのユースケースのために定義されています。 想定される拡張機能の使用例によっては、defaultTracking.sessionsを有効にしたくない場合や、minTimeBetweenSessionsMillisを5分より長く延長したい場合があります。目的のセッション定義を取得するために、これら2つの設定で実験してください。
  • ユーザーが拡張機能を長時間開いたままにすることを想定していない場合は、より短い間隔でイベントをアップロードするために、eventUploadPeriodSeconds を 30 秒未満の値に小さくしてください。手動で [[Amplitude instance] uploadEvents]; を呼び出して、強制的にアップロードすることもできます。

App Clips

SDKはまた、App Clipsでの追跡も可能にします。App Clipsでトラッキングを設定するには、App Clipターゲットの下にAmplitude-iOSをインストールしてください。 まず、amplitude-iOS SDKがメインアプリにインストールされていることを確認してください。

CocoaPods

App Clipターゲットを作成したら、プロジェクトのPodfileを開き、以下のコードを追加してください。

ruby
target 'appClipTarget' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  pod 'Amplitude', :git => 'https://github.com/Amplitude/Amplitude-iOS.git'
end

Podファイルを保存して、pod install を実行します。

Swiftパッケージマネージャー

  1. XcodeでApp Clipターゲットを開き、「*フレームワーク」、「ライブラリ」、「埋め込みコンテンツ」*セクションの下にある「+」ボタンを選択します。
  2. Amplitude Packageの下でAmplitudeを選択し、Addを選択します。

プッシュ通知イベント

iOS SDK を使用してクライアント側にプッシュ通知イベントを送信しないでください。 ユーザーがアプリを開いてからAmplitude SDKを初期化する必要があるため、ユーザーが次にアプリを開くまでSDKはイベントをAmplitudeサーバーに送信しません。 このため、データが遅延する可能性があります。

モバイルマーケティングオートメーションパートナーまたは HTTP API V2 を使用して、プッシュ通知イベントをAmplitudeに送信できます。

オフラインモード

Amplitude SDKは、setOffline(isOffline)メソッドを通じてオフラインでの使用をサポートしています。オフラインモードはデフォルトではオフになっています。

オフラインモードがオンの場合、SDKはイベントをローカルストレージに保存しますが、Amplitudeサーバーに送信することはありません。

オフラインモードがオフになっている場合、SDKは保留中のイベントをすべて即座にAmplitudeのサーバーに送信します。

SDKに必要な権限を制限するため、SDKはネットワーク接続を自動的に検出しません。代わりに、setOffline() を手動で呼び出して、オフラインモードを有効または無効にします。

[[Amplitude instance] setOffline:YES]; // enables offline mode
[[Amplitude instance] setOffline:NO]; // disables offline mode

ミドルウェア

ミドルウェアを使用すると、すべてのイベントで一連のカスタムコードを実行することでAmplitudeを拡張できます。このパターンは柔軟性があり、イベントの拡張、変換、フィルタリング、サードパーティの宛先へのルーティングなどをサポートしています。

各ミドルウェアは、runメソッドを持つシンプルなインターフェースです。

objc
- (void)run:(AMPMiddlewarePayload *_Nonnull)payload next:(AMPMiddlewareNext _Nonnull)next;

payloadには、SDKが送信するeventと、独自のミドルウェア実装にカスタムデータを渡すことができるオプションのextraが含まれています。

キュー内の次のミドルウェアを呼び出すには、next関数を使用します。ミドルウェア チェーンを継続するために next(payload) を呼び出してください。ミドルウェアが next を呼び出さなかった場合、現在のミドルウェアが完了した後にイベント処理が停止します。

client.addEventMiddlewareを使用してミドルウェアを Amplitude に追加します。 ミドルウェアは好きなだけ追加できます。 各ミドルウェアは、追加した順序で実行されます。

Objective-CSwift の例を見つけることができます。

セキュリティー

iOS は、各アプリケーションのデータを独自のセキュアなディレクトリに保存することで、アプリケーションデータを自動的に保護します。 他のアプリケーションは通常このディレクトリにアクセスできません。 ただし、デバイスがジェイルブレイクされた場合、アプリはデバイス上のすべてのディレクトリへのルートアクセス権を取得します。

他のアプリがジェイルブレイクされたデバイス上のアプリのAmplitudeデータにアクセスすることを防ぐために、AmplitudeはSDKに固有のインスタンス名を設定することをお勧めします。 これにより、他のアプリから分離された固有のデータベースが作成されます。

Amplitude* amplitude = [Amplitude instanceWithName:@"my-unique-instance-name"];

Appleプライバシーマニフェスト

2020年12月8日より、Appleはすべての新規アプリおよびアプリのアップデートに対して、プライバシーマニフェストファイルの提出を義務付けています。 Appleは2024年春にこれを義務化する予定です。 Amplitudeはアプリのサードパーティであるため、Amplitudeをユーザーのデータとどのように使用しているかをユーザーに適切に開示してください。

アプリに基づいてプライバシーマニフェストを更新

Amplitudeはデフォルト設定に基づいてプライバシーマニフェストを設定します。 設定とアプリに従ってプライバシーマニフェストを更新してください。

NSPrivacyTracking

トラッキングとは、ターゲット広告や広告測定の目的で、お客様のアプリから収集されたユーザーまたはデータと、他社のアプリ、ウェブサイト、オフラインプロパティから収集されたユーザーまたはデータをリンクさせる行為を指します。詳細については、Apple の記事「ユーザーのプライバシーとデータの使用」を参照してください。

デフォルトでは、Amplitudeはトラッキングにデータを使用しません。 このフィールドを追加し、アプリで対応している場合はそれをtrueに設定してください。

NSPrivacyCollectedDataTypes

デフォルトでは、SDKはdeviceIdのみを追跡します。 setUserId()を使用してuserIdも追跡してください。これを行うには、「ユーザーID」データ型を追加します。データの種類に関する詳細は、Appleの記事「プライバシーマニフェストにおけるデータの使用について説明する」を参照してください。

NSPrivacyTrackingDomains

NSPrivacyTrackingをtrueに設定した場合、設定に基づいてNSPrivacyTrackingDomainsに少なくとも1つのインターネットドメインを指定してください。

NSPrivacyAccessedAPITypes

SDKはデフォルトではAPIを使用しません。詳細はこちらをご覧ください。

アプリのプライバシーレポートを作成する

アプリのプライバシーを作成する方法に関する手順に従ってください。

Was this helpful?