Android
アプリケーションのインストルメンテーションを開始する前に、アプリを作成してappKeyがあることを確認してください。
インストール
Pyze SDKをインストールする際には、GradleかMavenを使用することをお勧めします。
Project build.gradleファイルにPyzeリポジトリを追加します。
Android Studioで、Project build.gradleファイル内のすべてのプロジェクトにPyzeリポジトリを追加します。
allprojects {
repositories {
jcenter()
maven {
url "http://pyze.bintray.com/pyze-android"
}
}
}
アプリのbuild.gradleファイルにPyze依存関係を追加します。
App build.gradleの依存関係の下にpyzeライブラリのコンパイル文を追加します。
dependencies {
compile 'com.pyze:PyzeLibrary:---Latest-Version---'
// Usage example: compile 'com.pyze:PyzeLibrary:4.+'
}
Pyze SDK は Android 4.03 以上に対応しています。minSDKVersionが15以上に設定されていることを確認してください。
minSdkVersion 15
AndroidManifest.xmlに以下のPermissionsが指定されていることを確認してください:
<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"/>
初期化
AndroidManifest.xmlのApplication TagにPyzeAppKeyを追加します。
<meta-data android:name="PyzeAppKey" android:value="PYZE_APP_KEY"/>
警告
PYZE_APP_KEY
を独自の appKey に置き換えたことを確認してください。
プロジェクトのMain ActivityまたはApplicationファイルにpyzeライブラリをインポートします。
import com.pyze.android.*;
メインアクティビティのonCreateメソッドに以下のPyze.initialize文を追加するか、できればApplicationのonCreateメソッドにintiliazeコールを追加してください。
public void onCreate(Bundle savedInstanceState) {
...
Pyze.initialize(getApplication());
}
カスタムイベント
カスタムイベントでは、アプリ内でのユーザーのユニークなアクションを簡単に追跡できます。
イベント
import com.pyze.android.PyzeEvents;
import java.util.HashMap;
PyzeEvents.postCustomEvent("Blog Read");
これにより、ユーザーがいつアクションを実行したかを追跡し、そのイベントがどれくらいの頻度で発生しているかを簡単にカウントすることができます。
属性を持つイベント
属性とは、イベントにアタッチできるキーと値のペアのことです。どのイベントでも最大99個の属性を持つことができます。ベスト・プラクティスを遵守し、アトリビュートに大きく依存して、インストルメンテーションを可能な限り最小限にして有用にすることを強くお勧めします。典型的なアプリケーションでは、イベントよりも多くの属性を持つべきです。
import com.pyze.android.PyzeEvents;
import java.util.HashMap;
// Create Hashmap with key value pairs of custom attributes and post with postCustomEventWithAttributes
HashMap <String, String> attributes = new HashMap<String, String>();
attributes.put("screen", "Home");
attributes.put("blog Id", 50);
PyzeEvents.postCustomEventWithAttributes("Blog Read", attributes);
タイムドイベント
ユーザーがアクションを完了するまでにかかる時間を計ることは、Pyze の一般的な使用例です。SDkには、タイマーを開始し、アクションの完了時にカスタムイベントを送信できるようにすることで、これを処理する機能が組み込まれています。
startTimerForEvent
- 名前を指定してタイマーを開始するpostTimedEvent
- 同じ名前を参照してタイマーを終了します。ミリ秒単位の時間が自動的にこのイベントに添付されます。postTimedEventWithAttributes
- 同じ名前を参照し、同様に任意の属性を添付してタイマーを終了します。ミリ秒単位の時間が自動的にこのイベントに添付されます。
import com.pyze.android.PyzeEvents;
import java.util.HashMap;
//Start timer for event
PyzeEvents.startTimerForEvent("Screen Load Time");
//Post timed event.
//Note : The event name attribute for the `startTimerForEvent` and `postTimedEvent` should match.
PyzeEvents.postTimedEvent("Screen Load Time");
//Post timed event with attributes
HashMap <String, String> attributes = new HashMap<String, String>();
attributes.put("device", "Nokia 4.2");
attributes.put("location", "CA");
PyzeEvents.postTimedEvent("Screen Load Time", attributes);
プロフィール
プロファイルは、Pyzeにユーザーに関するデータを追加するための強力な方法です。プロファイルを使用して、ある時点(イベント)に固有のデータではなく、特定のユーザーに関連付けられたデータを追加することができます。
ユーザーがアプリにログインしたら、setUserProfile
を呼び出してPyzeにユーザーを識別します。ユーザーが識別された後に発生したイベントはすべて、このユーザーに帰属します。このメソッドは、セッションの最初のログイン時に一度だけ呼び出す必要があります。
オプションでプロファイル属性を含めることができます。
Pyzeの組み込みプロファイル属性はpyze UIで特別な扱いを受けますが、受信したデータに基づいてカスタム属性のデータ型を判別しようとします。ビルトイン属性とカスタム属性の間には、適用されるフォーマット以外の違いはありません。
//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 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(pyzeProfileAttributes,customProfileAttributes);
ユーザーのログアウト
ユーザがログアウトした際にこの API を呼び出します。このコールの後に送信されるイベントには ID は付与されず、匿名のユーザに帰属します。
PyzeIdentity.resetUserProfile();
ユーザーのプライバシー
Pyzeは、エンドユーザーがデータ収集からオプトアウトしたり、ユーザーのデータを忘れるようにPyzeシステムに指示したりするためのAPIを提供しています。
setUserOptOut
エンドユーザーがデータ収集からオプトアウトできるようにします。オプトアウトはTrueかFalseかを切り替えることができます。
Pyze.setUserOptOut(true)
ユーザーデータの収集を再開するには、値を false に設定します。
削除ユーザー
エンドユーザがデータ収集からオプトアウトし、Pyzeシステム内のユーザを削除することができます。一度削除したユーザーは元に戻すことができませんので、確認することをお勧めします。
Pyze.deleteUser(true)
プッシュ通知
GoogleはFirebase Cloud Messagingサービス(FCM)を提供し、アプリパブリッシャーがプッシュ通知でユーザーにリーチできるようにしている。
pyzeでFirebaseの資格情報を設定する
1.プロジェクトを選択し、プロジェクト名の横にある設定アイコンをクリックします。
2.クラウド メッセージング タブで、レガシー サーバー キーと送信者 ID を検索します。
1.設定ページで、ドロップダウンメニューからアプリを選択します。
2.アプリの設定ページで、左側のペインからプッシュ通知の設定に移動します。
3.サーバーキーと送信者IDを入力し、アプリが1日と1週間に送信できるプッシュメッセージの最大数を制限します。
FCM プッシュ通知をアプリプロジェクトに統合する
ルートレベルの build.gradle ファイルに以下のルールを追加し、google-services プラグインを含めるようにします。
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:---Latest-Version---'
}
}
モジュールのGradleファイル(通常はapp/build.gradle)で、ファイルの一番下にプラグインを適用する行を追加して、Gradleプラグインを有効にします。
apply plugin: 'com.android.application'
android {
// ...
}
dependencies {
// ...
}
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
以下の依存関係をアプリのbuild.gradleファイルに追加します。
dependencies {
compile "com.google.firebase:firebase-messaging:---Latest-Version---"
}
最新版はいつでもBintrayから入手できます。
Android.Manifestファイルで、Application Tagの間に以下を追加します。
<receiver android:name="com.pyze.android.push.PyzePushTrackingReceiver" 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>
アプリケーションに google-services.json を追加します。
カスタム通知画像
カスタム通知アイコン画像(デフォルトではアプリアイコンが使用されます)を指定するには、pyze_notification_icon
とpyze_notification_icon_transperent
という名前のプロジェクトのdrawable
なフォルダに2つのアイコン画像を配置します。
プッシュ通知処理オプション
Pyze SDK は、基本的なプッシュメッセージとリッチプッシュメッセージの登録と表示をデフォルトで処理します。しかし、表示をカスタマイズしたり、何らかのアクションを実行したい場合など、Push Notificationsの登録を自分で行いたい場合があるかもしれません。
組み込みの表示を使用する
1.プッシュ受信イベントの登録
Pyze.registerForPushNotification(IPyzePushListener listener);
2.プッシュメッセージを受信したら、以下のメソッドを呼び出してメッセージを表示します。
Pyze.showPushNotification(PyzePushMessage pushMessage);
3.使用法
Pyze.registerForPushNotification(new IPyzePushListener() {
@Override
public void onPushNotificationReceived(PyzePushMessage pyzePushMessage) {
//Perform some operation and then ask Pyze to display the notification
Pyze.showPushNotification(pyzePushMessage);
}
});
独自のカスタム表示を使用する
1.プッシュ受信イベントの登録
Pyze.registerForPushNotification(IPyzePushListener listener);
2.使用法
Pyze.registerForPushNotification(new IPyzePushListener() {
@Override
public void onPushNotificationReceived(PyzePushMessage pyzePushMessage) {
//Perform internal app operation to your app eg: downloading content in the
// background.
}
});
高度な機能
登録を手動で処理するか、FCMのセットアップを自分で実装しているが、Pyzeのプッシュ通知機能を利用したい場合は、以下の方法で設定してください。
登録トークンをPyzeに渡す
@Override
public void onTokenRefresh() {
super.onTokenRefresh();
...
...
Pyze.setPushToken(FirebaseInstanceId.getInstance().getToken());
}
受信したプッシュメッセージがPyzeからのものであれば、プッシュメッセージを渡して以下のメソッドを呼び出します。で述べたように自分で処理するか、以下のようにPyzeに処理を任せることができます。
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if(remoteMessage.getData().get("pnty").equals("pyze")){
PyzePushMessage message = new PyzePushMessage(remoteMessage.getData());
//Handle displaying push notification manually or through Pyze
Pyze.showPushNotification(message);
}
}
アプリ内通知
アプリ内通知は、アプリを使用しているユーザーがアプリを使用した際に、アプリビジネスがユーザーに連絡を取ることを可能にします。アプリ内通知はpyze sdkに組み込まれており、追加の依存関係はありません。企業はDynamic FunnelsやIntelligence Explorerから手動で、Growth Automationからワークフローやキャンペーンに基づいて自動的にユーザーに連絡することができます。アプリ内通知は、新しいメッセージをチェックし、通知でモーダルをポップアップさせたい場所であればどこでも、次の方法でCampaigns Callから送信することができます。
Pyze.showInAppNotification(this); //`this` here is an activity context.
属性トラッキング
取得ソースアトリビューションにより、アプリ開発者は、アプリのインストールのためにPlayストアへの参照元を把握することができます。
ref_id
は、Google Playへの参照元URLに含まれている必要がある一連の特定のキー/値のペアです。使用できるキーは以下の通りです。
- キャンペーンソース(utm_source)。
- キャンペーン媒体(utm_medium)。
- キャンペーン期間(utm_term)。
- キャンペーンコンテンツ(utm_content)と
- キャンペーン名(utm_name)。
- キャンペーンソース、キャンペーン媒体、キャンペーン名は必須フィールドです。URLフォームビルダーを使用して、カスタムリファラルURLを作成することができます。
これは、参照 URL がどのように見えるかを示しています。
http://play.google.com/details?id=your.package.name&utm_source=google&utm_medium=banner&utm_campaign=mycampaign
インストールソースのトラッキングを有効にするには、AndroidManifest.xml
のタグの前に以下の行を追加します。
<receiver android:name="com.pyze.android.PlayRefReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
デバッグとロギング
ログレベルの設定
Initialize API は、オプションの 2 番目のパラメータでログレベルを設定することができます。デバッグログレベルを制御します。Pyze SDK のデフォルトのログレベルは Minimal です。
以下は、ログレベルのオプションです。
PyzelogLevelMinimal
PyzelogLevelWarnings
PyzelogLevelErrors
PyzelogLevelAll
Example: Pyze.initialize(getApplication(), "PyzelogLevelMinimal");
マルチデックス対応
multidexが有効になったら、multidex-config.pro
ファイルを作成し、その中に以下の行を追加します -keep class com.pyze.android.** { *; }
. app/build.gradleを以下のように更新します。
android {
buildTypes {
release {
multiDexKeepProguard file('multidex-config.pro')
...
}
}
}
詳細は以下のリンクからご覧いただけます。 https://developer.android.com/studio/build/multidex#keep