開発者向けインストールガイド(Pendo Xamarin Forms 5 SDK)

 

Xamarin Forms 5 Pendo SDKは、Xamarinの共有プロジェクトスペースにインストールすることを想定しており、iOSとAndroidの両方で同時にSDKを実行することが可能です。

Xamarin Forms 5+を使用していない場合、または以前にiOS XamarinまたはAndroid XamarinスペースでPendo SDKを単独で設定した場合は、「Pendo Xamarin Android SDKのインストール」と「Pendo Xamarin iOS SDKのインストール」の記事に記載されている手順に従ってください。

 

インストール手順

  1. [設定(Settings)]>[サブスクリプション設定(Subscription Settings)]>[他のアプリを追加(Add Another App)]を選択し、Xamarin Forms 5+アプリタイプを選択します。

    Xamarin_forms5%2B_app.png

  2. Pendoでは、2種類のアプリケーション(iOS用およびAndroid用)が[サブスクリプション設定]ページに作成されます。

    xamarinforms_ios_android.png

  3. いずれかのアプリを選択し、[インストールに進む(Continue to install)]を選択します。

 

Pendoの設定と初期化

SDK初期化は、SDKのインポート、Pendoサーバーとの通信のためのSDKのセットアップ、セッションの記録開始の3つで構成されています。Pendoサーバーとの通信設定は、アプリケーションを起動した後に行ってください。接続後、セッションの記録を開始できます。

ユーザーを識別し、データ収集を開始し、ガイドのコンテンツを表示するには、Pendoを初期化する必要があります。SDKは、訪問者が認証され、メタデータが既知であるか、匿名の訪問者である場合に初期化できます。セッションの記録は、アプリケーションの起動時、後で訪問者が識別されたとき、または現在の訪問者を識別して新しいセッションを開始する必要があるときに実行できます。

識別された訪問者は、定義されたスキーマを使用して、Pendoのメタデータに関連付けられた訪問者オブジェクトとアカウントオブジェクトを作成します。このデータがPendoでどのように定義され、使用されているかについての詳細は、訪問者とアカウントのメタデータに関する記事を参照してください。nullまたは""visitorIdとして渡すと、匿名の訪問者IDが生成されます。

  • visitorId - 一意のユーザーIDを含む文字列(例:「user-SFGH-56gh」)。このIDは、他のPendoウェブアプリまたはモバイルアプリの訪問者IDと一致する必要があります
  • accountId - 一意のアカウントID、訪問者の特定の企業またはグループへの所属(例:Acme Inc)を含む文字列。このIDは、他のPendoウェブアプリまたはモバイルアプリの訪問者IDと一致する必要があります
  • visitorData - 訪問者のメタデータ(例:Eメール、電話、国)
  • accountData - アカウントのメタデータ(例:種別、レベル、ARR)

ステップ1:Pendo SDKのインストール

  1. ビジュアルスタジオ(Visual Studio)のソリューションエクスプローラーでプロジェクトを右クリックし、[追加(Add)]- >[NuGetパッケージの追加…(Add NuGet Packages…)]を選択します。
  2. 最新バージョンのPendoSDKXamarinを検索します。
  3. [パッケージの追加(Add Package)]を押します。

 

ステップ2:Pendo SDKのインテグレーション

共有アプリケーションApp.xaml.csを開き、「using」の下に次を追加します。

...
 using PendoSDKXamarin;
 ...

 namespace ExampleApp
 {
   public partial class App : Application
   {
       ....
       private static IPendoInterface Pendo = DependencyService.Get<IPendoInterface>();
       ....    

 

protected override void OnStart()メソッドに、次のコードを追加します。

protected override void OnStart()
{
   string appKey = "eyJhbGciOiJSUzI1NiIsImtpZCI6IiIsInR5cCI6IkpXVCJ9.eyJkYXRhY2VudGVyIjoidXMiLCJrZXkiOiIwMTRiMTExYTBlYTBiMzUxNDc1ZWM2YzhlNGU0MWVkMWIwNWE1N2VjNzliYWEzOGE0MzQ2ODc0NTcwZWY2NWY4ODc0NjNmNDQ0NTcxZmE4ZmYwYmM2Nzg4NDVlZWNiYWU0ZWQxYmQ4MzBlYzU3ZmNlODY3ZGY0MmM3MDlmNGQ3NjY4MzI4MjdjOTVkYzE5YjA4YmE5ZWQwMTk2YjlmNzU5MmVhNGE4OGE3ZTZmYWFjYjM5ZTVmNTFlMzM2ZjhhMjZiNzdhOTE0OWRkYWIxYWY5OWM2Yzg5MmVkNTNiMTJlNmQyNjk3MjQ3OTQ0OTZmZWMwNjY0M2I0MDMyMzEwMzIzLjRkZGYxOTNhNDM0NDFkNWVmYzhjZWI0NjAyYzAzNjZkLmYyOTdkZWNiMmFmYzk1YTJiOWQwODc5ZmVkMjU2ZGE3NTQ0NWVmOTYzMmY3YWJiZmIxZTgyYzI3ZDhlZTU2OTkifQ.ml6lCv_WUlg-gnTwNfkm2tN81aTUDl2CHNLp9umqHvAePnSIpM5HHiQalLDj4r7FisKBmgtovzKO7ogXskgQL6fqSQDKvM5274KV2KzbQPb89jq9c37mjDiAzAauGoFNT2z72B8LcVdWwkuF4gfMKSwslNbtmlQLYsSQwA8ILBc";
Pendo.Setup(appKey);
   ...

 

訪問者が識別されているページで訪問者のセッションを開始します(例:ログイン、登録)。

...
 using PendoSDKXamarin;
 ...

 namespace ExampleApp
 {
   class ExampleLoginClass
   {
   ...
   private static IPendoInterface Pendo = DependencyService.Get<IPendoInterface>();
   ...
   public void LogginCallBackExampleMethod()
   {
       ....
       var visitorId = "VISITOR-UNIQUE-ID";
       var accountId = "ACCOUNT-UNIQUE-ID";

       var visitorData = new Dictionary<string, object>
       {
           { "age", 27 },
           { "country", "USA" }
       };

       var accountData = new Dictionary<string, object>
       {
           { "Tier", 1 },
           { "Size", "Enterprise" }
       };

       Pendo.StartSession(visitorId, accountId, visitorData, accountData);
       ...
   }
   ...

visitorId:ユーザーの識別子(例:John Smith)
visitorData : ユーザーのメタデータ(例:メール、電話、国)
accountId:ユーザーの特定の企業やグループの所属(例:Acme inc.)
accountData : アカウントのメタデータ (例:種別、レベル、ARR)

このコードは前回のモバイルセッション(該当する場合)を終了し、新しいモバイルセッションを開始し、提供された情報に基づいてすべてのガイドを取得します。

ヒント:visitorIdとして、nullもしくは""を渡すと、匿名の訪問者IDが生成されます。

 

ステップ3:タグ付けとテストのためのモバイルデバイス接続

以下の手順により、ページのタグ付けとガイドテスト機能が有効になります。

 

iOS

  1. Pendo URLスキームをinfo.plistファイルに追加します。
    [iOSアプリのターゲット(iOS App Target)]>[info.plist]にURLのタイプ(URL Types)がない場合、[新しいエントリを追加(Add new entry)]をクリックして「URLのタイプ」という名前を付け、タイプは[配列(Array)]を選択します。[+]ボタンをクリックして新しいURLを作成します。新しく作成された辞書の下で、[ドキュメントの役割(Document role)]を[配列]タイプの[URLスキーム(URL Schemes)]に変更します。[URLスキーム]を展開し、[値(Value)]の下にpendo-2461ef69を追加します。前の手順で作成した辞書の下に、[URL識別子(URL Identifier)]という名前の新しいエントリを追加し、「文字列(string)」と入力して、その[値]の下に好きな名前を設定します。
  2. 関数OpenURLを追加または変更します。
    AppDelegate.csファイルを開き、OpenUrlメソッドの下に次のコードを追加します。
    public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
    {
        if (url.Scheme.Contains("pendo"))
        {
            PendoForms.PendoManager.InitWithUrl(url.AbsoluteString);
            return true;
        }
        return true;
    }

 

Android

タグ内のアプリケーションAndroidManifest.xmlに次のアクティビティを追加します。

<activity android:name="sdk.pendo.io.activities.PendoGateActivity" android:launchMode="singleInstance" android:exported="true">
 <intent-filter>
   <action android:name="android.intent.action.VIEW"/>
   <category android:name="android.intent.category.DEFAULT"/>
   <category android:name="android.intent.category.BROWSABLE"/>
   <data android:scheme="pendo-2f919a79"/>
 </intent-filter>
</activity

 

ステップ4:インストールの検証

  1. ビジュアルスタジオを使用してアプリを実行し、デバイスログの中で以下を検索します。
    Pendo SDK was successfully integrated and connected to the server.
    (Pendo SDKは正常に統合され、サーバーに接続されました。)

     

  2. クリックして、SDKインテグレーションのための検証プロセスに進みます。
  3. サブスクリプション設定に、[インテグレーション済(Integrated)]と示されたアプリが表示されていることを確認します。

 

Xamarin Forms 5のインストールのトラブルシューティング

以前にiOSとAndroidプラットフォーム固有のアプリケーションキーを使用して Xamarin SDKをインストールしていて、今回新しい共有アプリをインストールする場合は、iOS Xamarin ProjectとAndroid Xamarin Projectスペースから以前のインストールコードを削除し、上記の手順に従ってください。上記のXamarin共有プロジェクトのインストール手順では、1つのアプリケーションキーを想定しているため、手順を適用する際には、以下のように、プロジェクトで以前使用していた2つのiOSとAndroidの異なるアプリケーションキーを組み合わせるようにコードを調整する必要があることに注意してください。

private const string KeyIOS = PENDO_IOS_KEY;
private const string KeyAndroid = PENDO_ANDROID_KEY;

private string Key() 
{
    string key = null;

    if (Device.RuntimePlatform == Device.iOS)
{
        key = KeyIOS;
    }
    else if(Device.RuntimePlatform == Device.Android)
    {
        key = KeyAndroid;
    }

    return key;
}