# iOS
::: Tips
実装する前にデータアクセスの準備を確認しておいてください。
iOS SDK 対応システムバージョンはiOS 8.0以上必要です
iOS SDK ( Framework 形式) サイズ約 8.1MB
:::
最新バージョン: 2.8.3
更新時間: 2022-11-08
ダウンロード:FrameWork (opens new window)、Source Code (opens new window)
# SDK実装
# 1.1 自動実装
- CocoaPods を利用してSDK実装
- Podfileを作成・編集(既存があればそのまま編集):
Podfileを作成し、プロジェクト(.xcodeproj
)のファイルの同カタログの元で以下のコードを実行
pod init
Podfile の以下の内容を編集:
platform :ios, '9.0'
target 'YourProjectTarget' do
pod 'ThinkingSDK' #ThinkingSDK
end
2.プロジェクトのルートディレクトリに、以下のインストールコードを実行
pod install
成功後には、ターミナルで以下のヒントが提示される:
- インポート成功したら、ワークスペースを起動
コード実行成功後、.xcworkspace
のファイルが生成されるとiOS SDK
がインポート成功です。.xcworkspace
を起動してください。(注意:その際に同時に.xcodeproj
のファイルを起動することができません)
- Carthageを利用してSDKインストール
1.Cartfile ファイルの中で、以下設定を追加します
github "ThinkingDataAnalytics/ios-sdk"
2.carthage update --platform iOS
を実行し、ThinkingSDK.framework
をプロジェクト内に追加します
# 1.2 手動実装
- iOS SDK (opens new window)をダウンロード&解凍
2.ThinkingSDK.framework
を XCode Project Workspace へ移動
- XcodeでTargetsを探し出し、Build Settingsのメニューの
Other linker flags
のオプションに-ObjC
を追加
4.XcodeでTargetsを探し出しBuild Phasesのメニューに、Link Binary With Libraries
の元で以下の依存項目を追加:libz.dylib
、Security.framework
、SystemConfiguration.framework
、libsqlite3.tbd
# 初期設定
パラメータ説明:
APPID
: プロジェクトのAPPID、TEプロジェクト管理画面にて取得可能SERVER_URL
: データ送信URL- SaaSの場合はプロジェクト管理→データアクセスURLにて確認してください
- プライベート構築の場合は、データ送信URLを指定することが可能
# メイン機能
メイン機能を利用する前に、ユーザー識別ルールを確認してくだ;
SDKはゲストIDを自動で作成し、ローカルで保存される;ユーザーがログインする前に、ゲストIDを身分識別IDとして使われます。
注意:ゲストIDはユーザーがアプリを再インストール時にリセットされます。
# 3.1 アカウントIDを設置
ユーザーがログインする時に、login
を呼び出して、ユーザーのアカウントIDを設定できます。TEプラットフォームはアカウントIDを身分識別IDとしてlogout
を呼び出しする前までに保留します。login
を数回呼び出すと、前のアカウントIDが上書きされます。
この方法ではログインイベントを送信されません
# 3.2 共通イベントプロパティ設定
共通イベントプロパティは全てのイベントに含まれるプロパティとなります。setSuperProperties
を呼び出しして設定することできます。イベント送信する前に、共通イベントプロパティを設定しておいてください。
例えば:プレイヤーのレベル、戦闘力、所持資源などのプロパティ
共通イベントプロパティはキャッシュに保存され、Appを起動する度に呼び出す必要はありません。もし呼び出す場合はsetSuperProperties
:以前設定した共通イベントプロパティは上書きされます。
- イベントのプロパティは一つ
NSDictionary
の対象となり、エレメントごとでプロパティを分けられます - Key は当プロパティの名称でstringタイプで、英文字と数字、 "_"を含め、最大50文字。TEシステムは一律で小英文字に統一されます
- Value は当プロパティの値で、String, Number, Bloon, Time, object, array, list objectを対応しております。
- Bloonタイプのプロパティをアップロードしたい場合は、
@YES
と@NO
または[NSNumber numberWithBool:YES]
と[NSNumber numberWithBool:NO]
で値を付与してください。@true
、@false
、@TRUE
と@FALSE
を利用してはいけません。
イベントプロパティ、ユーザープロパティは共通イベントプロパティと一致する必要があります。
# 3.3 自動収集イベントのOn/Off
クライアント SDKは一部イベントを自動収集することが可能で、実際業務状況に応じてon/offにしてください。以下は参考となります。詳しくは自動収集ガイド
// enable autotrack event
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID]enableAutoTrack:ThinkingAnalyticsEventTypeAppInstall | ThinkingAnalyticsEventTypeAppStart |ThinkingAnalyticsEventTypeAppEnd];
# 3.4 イベント送信
track
を呼び出してイベントの送信を行います。事前にデータプランをご用意の上、送信してください。以下はモデルコードとなります。例:アイテム購入
イベント名はstringタイプで、英文字と数字、 "_"を含め、最大50文字まで入力可能です。
# 3.5 ユーザープロパティ設定
一般のユーザープロパティに関しては、user_set
を利用して設定することができますが、 UserSet
は元の値を上書きされます。本来該当プロパティに値がない場合は、プロパティが新規作成されます。以下はコード例となります。
# コード例のまとめ
以下のコード例で全ての操作が含まれます、以下の順で利用推奨しております:
ThinkingAnalyticsSDK *instance;
if (privacy policy is authorized) {
instance = ThinkingAnalyticsSDK.sharedInstance(this, TE_APP_ID, TE_SERVER_URL);
if(instance != null)
{
//if the user has logged in, the account ID of the user could be set as the unique identifier
instance.login("TE");
//After setting super properties, each event would have super properties
NSMutableDictionary *superProperties = [NSMutableDictionary new];
[superProperties setValue:@"te" forKey:@"channel"]; //string
[superProperties setValue:@1 forKey:@"age"]; //number
[superProperties setValue:@YES forKey:@"isSuccess"]; //boolean
[superProperties setValue:[NSDate now] forKey:@"birthday"]; //time
[superProperties setValue:@{@"key":@"value"} forKey:@"object"]; //object
[superProperties setValue:@[@{@"key":@"value"}] forKey:@"object_arr"]; //array object
[superProperties setValue:@[@"value"] forKey:@"arr"]; //array
[instance setSuperProperties:superProperties]; //set super properties
//enable autotrack event
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID]enableAutoTrack:ThinkingAnalyticsEventTypeAppInstall | ThinkingAnalyticsEventTypeAppStart |ThinkingAnalyticsEventTypeAppEnd];
//send event
NSDictionary *eventProperties = @{ @"product_name": @"アイテム名"};
[instance track:@"product_buy" properties:eventProperties];
//Set user properties
[instance user_set:@{@"username": @"TE"}];
}
}