Xamarin - ios
アプリケーションのインストルメンテーションを開始する前に、アプリを作成してappKeyがあることを確認してください。
インストール
Pyze-Xamarin-iOS.dllのダウンロードはこちらから。
XamarinプロジェクトにPyze iOSバインディングを追加する
- Pyze_Xamarin_iOS.dllを.iOS -> Referencesに追加します。
- 参照]を右クリック -> [参照の編集] -> [.Netアセンブリ] -> [DLLを参照] -> [OK]
初期化
Pyze Xamarin Bindingをインポートしたら、Pyzeライブラリを初期化する必要があります。
アプリケーションのAppDelegate内部で、アプリケーションのWillFinishLaunching
ライフサイクルコールバックをオーバーライドし、Pyze.Initializeを呼び出します。
public override bool WillFinishLaunching(UIApplication application, NSDictionary launchOptions)
{
Pyze.Initialize("Your Pyze App Key");
return true;
}
あるいは、2 番目のパラメータとしてログのスロットル設定を渡すこともできます。
Ex:
Pyze.Initialize("Your Pyze App Key", PyzeLogLevel.All);
カスタムイベント
カスタムイベントでは、アプリ内でのユーザーのユニークなアクションを簡単に追跡することができます。
イベント
PyzeCustomEvents.PostWithEventName("Blog Read");
これにより、ユーザーがいつアクションを実行したかを追跡し、そのイベントがどのくらいの頻度で発生しているかを簡単にカウントすることができます。
属性を持つイベント
属性とは、イベントにアタッチできるキーと値のペアのことです。どのイベントでも最大99個の属性を持つことができます。ベスト・プラクティスを遵守し、アトリビュートに大きく依存して、インストルメンテーションを可能な限り最小限にして有用にすることを強くお勧めします。典型的なアプリケーションでは、イベントよりも多くの属性を持つべきです。
var keys = new object [] { "screen", "seconds spent" };
var values = new object [] { "Home", "50" }:
PyzeCustomEvents.PostWithEventName("Blog Read", attributes);
プロフィール
プロファイルは、Pyzeにユーザーに関するデータを追加するための強力な方法です。プロファイルを使用して、ある時点(イベント)に固有のデータではなく、特定のユーザーに関連付けられたデータを追加することができます。
ユーザーがアプリにログインしたら、setUserProfile
を呼び出してPyzeにユーザーを識別します。ユーザーが識別された後に発生したイベントはすべて、このユーザーに帰属します。このメソッドは、セッションの最初のログイン時に一度だけ呼び出す必要があります。
オプションでプロファイル属性を含めることができます。
Pyzeの組み込みプロファイル属性はpyze UIで特別な扱いを受けますが、受信したデータに基づいてカスタム属性のデータ型を判別しようとします。ビルトイン属性とカスタム属性の間には、適用されるフォーマット以外の違いはありません。
var pyzeProfileKeys = new object [] { "email_id", "date_of_birth" };
var pyzeProfileValues = new object [] { "xyz@abc.com", "1984-06-01" };
var pyzeProfileAttributes = NSDictionary.FromObjectsAndKeys (pyzeProfileValues, pyzeProfileKeys);
var customProfileKeys = new object [] { "age", "pincode" };
var customProfileValues = new object [] { "29", "23200" };
var customProfileAttributes = NSDictionary.FromObjectsAndKeys (customProfileValues, customProfileKeys);
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を呼び出さないでください。
PyzeIdentity.updateUserProfile(userId,pyzeProfileAttributes,customProfileAttributes);
ユーザーのログアウト
ユーザがログアウトした際にこの API を呼び出します。このコールの後に送信されるイベントには ID は付与されず、匿名のユーザに帰属します。
PyzeIdentity.resetUserProfile();
Uユーザーのプライバシー
Pyzeは、エンドユーザーがデータ収集からオプトアウトしたり、ユーザーのデータを忘れるようにPyzeシステムに指示したりするためのAPIを提供しています。
setUserOptOut
エンドユーザーがデータ収集からオプトアウトできるようにします。オプトアウトはTrueかFalseかを切り替えることができます。
Pyze.setUserOptOut(true)
ユーザーデータの収集を再開するには、値を false に設定します。
削除ユーザー
エンドユーザがデータ収集からオプトアウトし、Pyzeシステム内のユーザを削除することができます。一度削除したユーザーは元に戻すことができませんので、確認することをお勧めします。
Pyze.deleteUser(true)
プッシュ通知
IOSのプッシュ通知
AppleはApple Push Notification Service(APNS)を提供しており、アプリパブリッシャーがプッシュ通知でユーザーにリーチできるようにしています。
1. P12 証明書の生成
- apple developerアカウントの
Certificates, Identifiers & Profiles
ページに移動します。 - 識別子」を選択し、「
YOUR_APP_IDENTIFIER
」に移動します。 - 機能」で「プッシュ通知」を選択し、「設定」を選択します。
- 今すぐ開発/プロダクションSSL証明書の下で、証明書の作成を選択します。
- ここに記載されているように、証明書署名要求をアップロードします。https://help.apple.com/developer-account/#/devbfa00fef7)
- 生成された証明書をダウンロードして、
Keychain Access
に追加します。 - ここで、先ほどインポートした証明書を選択し、「エクスポート」を選択します。
- パスワードを入力し、
.p12
を任意の場所に保存します。
2. プロバイダとしてPyzeを設定する
アプリのユーザーに代わってPyzeがプッシュ通知を送信できるようにするには、iOSのプッシュ証明書をPyzeに提供してください。
- growth.pyze.comにログイン
- ナビゲーションペインの[設定]をクリックします。
- ドロップダウンリストから鍵を提供するアプリを選択します。
- 左メニューのプッシュ通知を選択します。
- .p12形式のPush通知証明書をアップロードし、p12パスワード(証明書作成時に生成したパスワード)を指定し、プロビジョニングモードを指定します。使用している証明書の種類に応じて、「開発」または「本番」を指定します。
- 1日と1週間のノルマ制限を選択
- 保存をクリックします。
3. Enabling Push Notifications
リモート通知を有効にするには、Xamarin IDEから、またはアプリのプロパティリスト(通常はInfo.plist)ファイルを編集して、お好みに応じて設定します。
オプション1: Xamarin IDEを使用する
- Xamarin IDEで、plistファイルを開きます。
- 対応するチェックマークをクリックして、Background Modes、Enable Background Modes、Remote Notificationsを開きます。
オプション2:アプリのプロパティリスト(通常はInfo.plist)ファイルを直接編集する
Info.plist
ファイルを開き、次の行を追加します。
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
</array>
アプリのプッシュ通知を有効にする
先に進む前にiOS用のビルドを生成します。
リモート通知を有効にする
info.plistを開いてバックグラウンドモードを有効にし、Remote notificationオプションにチェックを入れます。
App Delegate の FinishedLaunching ライフサイクルコールバック内に以下のスニペットを追加します。
// Override point for customization after application launch.
// If not required for your application you can safely delete this method
if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
{
var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, new NSSet());
UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
UIApplication.SharedApplication.RegisterForRemoteNotifications();
}
else {
UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
}
App DelegateのRegisteredForRemoteNotifications
のライフサイクルコールバックをオーバーライドし、以下のスニペットを追加します。
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
{
// Get current device token
var DeviceToken = deviceToken.Description;
if (!string.IsNullOrWhiteSpace(DeviceToken))
{
DeviceToken = DeviceToken.Trim('<').Trim('>');
}
// Get previous device token
//var oldDeviceToken = NSUserDefaults.StandardUserDefaults.StringForKey("PushDeviceToken");
Pyze.SetRemoteNotificationDeviceToken(deviceToken);
// Save new device token
NSUserDefaults.StandardUserDefaults.SetString(DeviceToken, "PushDeviceToken");
}
App DelegateのDidReceiveRemoteNotification
のライフサイクルコールバックをオーバーライドし、以下のスニペットを追加します。
public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action completionHandler)
{
Pyze.ProcessReceivedRemoteNotification(userInfo);
}
アプリ内通知
アプリ内通知は、アプリを使用しているユーザーがアプリを使用した際に、アプリビジネスがユーザーに連絡を取ることを可能にします。
アプリ内通知はpyze sdkに組み込まれており、追加の依存関係はありません。企業は、Dynamic FunnelsやIntelligence Explorerから手動で、Growth Automationからワークフローやキャンペーンに基づいて自動的にユーザーに連絡することができます。
アプリ内通知は、キャンペーンから送信することができます。
新しいメッセージをチェックしたい場所で以下のメソッドを呼び出して、通知と一緒にモーダルをポップアップさせます。
Pyze.ShowUnreadInAppNotificationUIWithCompletionHandler((obj) =>
{
});
デバッグとロギング
プラットフォーム固有の情報は ios のドキュメントを参照してください。