Xamarin - Android
アプリケーションのインストルメンテーションを開始する前に、アプリを作成してappKeyがあることを確認してください。
インストール
-
Pyze Xamarin Android Bindingのダウンロード Pyze-Xamarin-Android.dllをこちらからダウンロードしてください
-
PyzeXamarinAndroid.dllを.Droid -> Referencesの下に追加します。
-
参照]を右クリック -> [参照の編集] -> [.Netアセンブリ] -> [DLLを参照] -> [OK] s
初期化
Androidのマニフェストを変更する
マニフェストのapplicationタグの下に以下のタグを追加します。
<meta-data android:name="PyzeAppKey" android:value="Use PyzeAppKey from growth.pyze.com" />
マニフェストに以下のパーミッションが指定されていることを確認してください。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
プロジェクトのメインアクティビティを変更する
メインアクティビティに以下のインポート文を追加します。
using pyze.xamarin.android;
Main ActivityのonCreate
メソッドに以下のPyze.initialize
文を追加します。
public void onCreate(Bundle savedInstanceState) {
//
//
//...
Pyze.initialize(this);
// Alternatively you can pass the log throttling setting as the second parameter.
// Ex: Pyze.Initialize(this, PyzeLogLevel.All);
}
カスタムイベント
カスタムイベントでは、アプリ内でのユーザーのユニークなアクションを簡単に追跡できます。
イベント
using pyze.xamarin.android.PyzeEvents;
...
...
PyzeCustomEvent.PostCustomEvent("Blog Read");
これにより、ユーザーがいつアクションを実行したかを追跡し、そのイベントがどれくらいの頻度で発生しているかを簡単にカウントすることができます。
属性を持つイベント
属性とは、イベントにアタッチできるキーと値のペアのことです。どのイベントでも最大99個の属性を持つことができます。ベスト・プラクティスを遵守し、アトリビュートに大きく依存して、インストルメンテーションを可能な限り最小限にして有用にすることを強くお勧めします。典型的なアプリケーションでは、イベントよりも多くの属性を持つべきです。
using pyze.xamarin.android.PyzeEvents;
...
...
var attributes = new Dictionary();
attributes.Add("screen", "Home");
attributes.Add("seconds spent", "50");
PyzeCustomEvent.PostCustomEventsWithAttributes("Blog Read", attributes);
プロフィール
プロファイルは、Pyzeにユーザーに関するデータを追加するための強力な方法です。プロファイルを使用して、ある時点(イベント)に固有のデータではなく、特定のユーザーに関連付けられたデータを追加することができます。
ユーザーがアプリにログインしたら、setUserProfile
を呼び出してPyzeにユーザーを識別します。ユーザーが識別された後に発生したイベントはすべて、このユーザーに帰属します。このメソッドは、セッションの最初のログイン時に一度だけ呼び出す必要があります。
オプションでプロファイル属性を含めることができます。
Pyzeの組み込みプロファイル属性はpyze UIで特別な扱いを受けますが、受信したデータに基づいてカスタム属性のデータ型を判別しようとします。ビルトイン属性とカスタム属性の間には、適用されるフォーマット以外の違いはありません。
using pyze.xamarin.android.PyzeIdentity;
...
//Create Pyze Profile Attributes object
var pyzeProfileAttributes = new Dictionary<>();
pyzeProfileAttributes.Add("email_id", "xyz@abc.com");
pyzeProfileAttributes.Add("date_of_birth", "1984-06-01");
pyzeProfileAttributes.Add("first_name", "John");
pyzeProfileAttributes.Add("last_name", "Jacobs");
//Create Custom Profile Attributes object
var customProfileAttributes = new Dictionary<>();
customProfileAttributes.Add("age", 29);
customProfileAttributes.Add("picode", "23200");
customProfileAttributes.Add("city", "XYZ");
//Call the setUserProfile API
PyzeIdentity.setUserProfile(userId,pyzeProfileAttributes,customProfileAttributes);
Pyzeのプロフィール属性
Pyze ユーザープロファイル フィールド名 | データの種類/説明 |
---|---|
background | (文字列) ユーザーの背景、経歴または履歴データ |
country | (文字列) 国コードは ISO-3166-1 alpha-2 規格で 送信する必要があります。 |
current_location | (オブジェクト) フォーマッ ト。{“longitude”. -33.991894, “緯度”. 25.243732} |
date_of_first_use | (ユーザーが最初にアプリを使用した日付) ISO 8601形式またはyyyy-MM-dd’T’HH:mm:ss.SSZ形式の文 字列。 |
date_of_last_use | (ユーザーが最後にアプリを使用した日付) ISO 8601形式の文字列、またはyyyy-MM-dd’T’T’HH:mm:ss.SSZ形 式の文字列。 |
date_of_birth | (生年月日) “YYYY-MM-DD"形式の文字列。 |
email_id | (文字列) 電子メール ID |
email_subscribe | 文字列) 使用可能な値 は、“opt_in”(メールメッセージの受信を明示的に承認)、“opt_out”(メールメッセージの受信を明示的に拒否)、“subscribed”(オプトインもオプトアウトもしていない)です。 |
email_hard_bounced | ハードバウンスが発生した場合に自動的に更新されます (true またはfalse) |
email_spam_reported | ユーザーがISP経由でメールをスパムとしてマークした場合、自動的に更新されます(trueまたはfalse) |
facebook_id | (文字列) facebook ID |
first_name | (文字列) ユーザのファーストネーム |
gender | 文字列)「M」、「F」、「O」(その他)、「N」(該当しない)、「P」(言いたくない)、「U」(不明 |
home_city | (文字列) ユーザーの出身地 |
image_url | (文字列) ユーザーに関連付けられる画像の URL |
language | (文字列) ISO-639-1 標準で送信する言語を要求します。 |
last_name | (文字列) ユーザの姓 |
marked_email_as_spam_at | (文字列) ユーザーの電子メールがスパムとしてマークされた日付。ISO 8601形式、またはyyyy-MM-dd’T’HH:mm:ss.SSSZ形式でなければなりません。 |
phone | (文字列) 電話番号 |
push_subscribe | (文字列) 利用可能な値 は、“opted_in”(明示的にプッシュ メッセージを受信するように登録され ている)、“unsubscribed”(明示的にプッシュメッセージをオプトアウトしている)、“subscribed”(オプトインもオプトアウトもしていない)です。 |
push_tokens | app_id とトークン文字列を持つオブ ジェクトの配列。オプションで、この トークンが関連付けられているデバ イスの device_id を指定することがで きます。アプリ識別子、“token”. “abcd”, “device_id”. “optional_field_value”}]。device_id が 指定されていない場合は、ランダム に生成されます。 |
time_zone | (文字列) タイムゾーンはIANAタイム ゾーンデータベース(例: “America/New_York “や “Eastern Time (US & Canada)")に従って送信 されなければなりません。有効な値 のみが尊重されます。 |
twitter_id | (文字列)Twitter ID |
既存のユーザープロファイルの更新
既に設定されているユーザプロファイルの属性を更新するには、以下のAPIを使用します。
注意 : setUserProfileを呼び出す前にこのAPIを呼び出さないでください。
//Create Pyze Profile Attributes object
HashMap <String, String> pyzeProfileAttributes = new HashMap<String, String>();
pyzeProfileAttributes.put("email_id", "xyz@abc.com");
pyzeProfileAttributes.put("date_of_birth", "1984-06-01");
pyzeProfileAttributes.put("first_name", "John");
pyzeProfileAttributes.put("last_name", "Jacobs");
//Create Custom Profile Attributes object
HashMap <String, String> customProfileAttributes = new HashMap<String, String>();
customProfileAttributes.put("age", 29);
customProfileAttributes.put("picode", "23200");
customProfileAttributes.put("city", "XYZ");
//Call the updateUserProfileAttributes API
PyzeIdentity.updateUserProfile(userId,pyzeProfileAttributes,customProfileAttributes);
ユーザーのログアウト
ユーザがログアウトした際にこの API を呼び出します。このコールの後に送信されるイベントには ID は付与されず、匿名のユーザに帰属します。
PyzeIdentity.resetUserProfile();
ユーザーのプライバシー
Pyzeは、エンドユーザーがデータ収集からオプトアウトしたり、ユーザーのデータを忘れるようにPyzeシステムに指示したりするためのAPIを提供しています。
setUserOptOut
エンドユーザーがデータ収集からオプトアウトできるようにします。オプトアウトはTrueかFalseかを切り替えることができます。
Pyze.setUserOptOut(true)
ユーザーデータの収集を再開するには、値を false に設定します。
削除ユーザー
エンドユーザがデータ収集からオプトアウトし、Pyzeシステム内のユーザを削除することができます。一度削除したユーザーは元に戻すことができませんので、確認することをお勧めします。
Pyze.deleteUser(true)
プッシュ通知
- https://console.firebase.google.com/ で新しい Android プロジェクトを作成し、google-services.json をダウンロードします。
- Google-services.jsonから抽出した値を含む以下の文字列のresoucesを、Resources -> valuesファイルに追加してください。
//values of string resources here represent, key path to get the values from google-services.json
<string name="default_web_client_id" translatable="false"> client ->oauth_client ->client_id </string>
<string name="firebase_database_url" translatable="false"> project_info ->firebase_url </string>
<string name="gcm_defaultSenderId" translatable="false"> project_info ->project_number </string>
<string name="google_api_key" translatable="false"> client ->api_key ->current_key </string>
<string name="google_app_id" translatable="false"> client ->client_info ->mobilesdk_app_id </string>
<string name="google_crash_reporting_api_key" translatable="false"> client ->api_key ->current_key </string>
<string name="google_storage_bucket" translatable="false"> project_info ->storage_bucket </string>
- firebaseとXamarinプロジェクトで同じパッケージ名を使用していることを確認してください。
- AndroidManifest.xmlファイルに以下のエントリを追加します。以下の “My_Package_Name “の2つのインスタンスは、必ずアプリのパッケージ名に置き換えてください。
<activity android:name="com.pyze.android.push.PyzePushTrackingActivity" android:exported="true"/>
<service android:name="com.pyze.android.push.fcm.FcmPushListenerService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="com.pyze.android.push.fcm.FcmInstanceIDListenerService" android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<provider android:name="com.google.firebase.provider.FirebaseInitProvider"
android:authorities="My_Package_Name.firebaseinitprovider"
android:exported="false"
android:initOrder="100" />
<service android:name="com.google.firebase.iid.FirebaseInstanceIdService" android:exported="true" >
<intent-filter android:priority="-500" >
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="My_Package_Name" />
</intent-filter>
</receiver>
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
<service android:name="com.google.firebase.messaging.FirebaseMessagingService" android:exported="true" >
<intent-filter android:priority="-500" >
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
プッシュ通知での作業の詳細については、Android のドキュメントを参照してください。
アプリ内通知
アプリ内通知は、アプリを使用しているユーザーがアプリを使用した際に、アプリビジネスがユーザーに連絡を取ることを可能にします。アプリ内通知はpyze sdkに組み込まれており、追加の依存関係はありません。企業は、Dynamic FunnelsやIntelligence Explorerから手動で、Growth Automationからワークフローやキャンペーンに基づいて自動的にユーザーに連絡することができます。アプリ内通知は、キャンペーンから送信することができます。
新しいメッセージをチェックしたり、通知を表示するモーダルをポップアップさせたりしたい場合は、次のメソッドを呼び出してください。
メソッドは、UI上のコールトゥアクションボタンが押されるたびに呼び出されるコールバックハンドラメソッドを受け付けます。
Pyze.ShowInAppMessage(this, (sender, e) =>
{
//On in app button pressed
});