開発者向けインストールガイド(Pendo iOS SDK(Objective-C))

最終更新日:

重要:この記事では、SDKを正常にインストールするために必要なAPIキーとスキームIDを含まないコード例を紹介しています。サブスクリプションのPendo管理者は、[サブスクリプション設定(Subscription Settings)]の[アプリの詳細(App Details)]または[アプリの詳細]の[インストール設定(Install Settings)]で、これらの一意のIDにアクセスできます。

Swiftの場合はこちらをクリックしてください。

概要

Pendoはプロダクトの使用データをキャプチャし、ユーザーからのフィードバックを取得し、アプリ内でユーザーとコミュニケーションをとりながら、ユーザーにオンボーディングを促したり、ユーザーを教育したり、価値あるものに導いたりすることができます。Pendoのタグ付けとガイドは完全にコードレスで、エンジニアリングリソースは不要です。ただし、SDKのインストールとアプリにおけるPendoの初期化にはエンジニアの力が必要です。Pendoと一般的なインストールプロセスに関する情報は、導入計画文書(Installation Planning article)に掲載されています。準備をすれば、Pendo SDKの技術的なインストールは簡単です。

Pendoを最初にインストールする際の技術的な部分はSDKだけです。SDKが正しくインストールされれば、誰でもPendoを使うことができます。SDKは、訪問者のアプリ内での行動を追跡し、ガイドを読み込み、セッションのメタデータをキャプチャします。トラックイベントなど、モバイル向けにPendoの使用を最適化および拡張するために、後から追加の開発を行うことが可能です。最新のPendoの機能を使用するには、新しいバージョンがリリースされた際に、モバイルアプリのSDKも更新する必要があります。

Pendoは、他の一般的なCRM、分析、およびコラボレーションツールとのインテグレーションを行っています。インテグレーションの範囲は、コードレスのインストールウィザードによるネイティブインテグレーションから、カスタム開発まで多岐にわたりますが、この記事では説明しません。一般的なインテグレーションについては、インテグレーションに関する記事をご覧ください。また、SDKのインストールが完了した後のサブスクリプションのインテグレーションについては、Pendoの担当者にお問い合わせください。

 

要件

  • モバイルSDK 2.10以降
  • iOS 9.0以降

Pendo iOS SDKのインストール

SDKは、CocoaPods、Swift Package Manager、またはマニュアルでインストールできます。任意の方法で一度だけインストールを行ってください。この作業が完了したら、Pendoを設定して初期化し、ユーザーの識別、データの収集、およびガイドの読み込みを行う必要があります。

 

CocoaPodsによるインストール

1. PodFileを開きます。

PodFileの先頭に以下の記述を追加します。

platform:ios, '9.0'
use_frameworks!
>pod 'Pendo', '~> 2.14.0'

 

2. Applicationフォルダーでpod installを実行します。

 

Swift Package Manager(SPM)によるインストール

1.Xcodeで、[File]>[Swift Packages]>[Add Package Dependency]を開きます。 >
2. https://github.com/pendo-io/pendo-mobile-iospackage.swiftを検索します。

 

マニュアルインストール

1. pendo-ios-sdk libraryから、最新のバージョン2のSDK pendo-ios-sdk-frameworkファイルをダウンロードします。

2. ZIPファイルを解凍してフレームワークPendo.frameworkを展開します。

3. フレームワークをプロジェクトにドラッグして、Pendo.frameworkをプロジェクトのFrameworksディレクトリにコピーします。プロンプトが表示されたら、[必要に応じてアイテムをコピーする(Copy items if needed)]オプションにチェックを入れます。

4. [フェーズの作成(Build Phases)]>[バイナリをライブラリにリンク(Link Binaries With Libraries)]で、Pendo.frameworkが表示されていることを確認します。

5. [一般(General)]>[組み込みバイナリ(Embedded Binaries)]で、「+」ボタンを押して、Pendo.frameworkを追加します。

6.[一般(General)]> [デプロイメントターゲット(Deployment Target)]で、デプロイメントターゲットが9.0以降に設定されていることを確認します。

 

Pendoの設定と初期化

SDKの初期化には、SDKのインポートと、訪問者が識別されたときのSDKの初期化という2つの要素があります。Pendo SDKは、アプリケーションのonCreate時にインポートされます。初期化コールは、現在の訪問者を識別してセッションを開始するすべてのアクティビティで発生する可能性があります。

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

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

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

 

1. AppDelegateクラスでのPendoの設定

アプリケーションAppDelegateクラスに以下のコードを追加します。

@import Pendo;

 

application(\_:didFinishLaunchingWithOptions:)以下のコードを追加します。

setupは、SDKの設定と初期化を行います。

NSString * appKey = @"<REPLACE_THIS_WITH_YOUR_API_KEY>";

[[PendoManager sharedManager] setup:appKey];     

 

2. 訪問者が識別されるviewControllerでのPendoの初期化

StartSessionは新しいセッションを開始し、データ収集を開始し、指定されたメタデータを持つガイドを読み込みます。これにより、認証されたユーザーを識別したり、匿名の訪問者に対してランダムな訪問者IDを生成したりできます。startSessionを再度呼び出すと、現在のセッションが終了して新しいセッションが開始され、データ収集が開始され、渡された新しい訪問者のメタデータを使用してガイドが読み込まれます。

以下のコードを追加してPendoを初期化し、現在の訪問者を識別します。

[[PendoManager sharedManager] startSession: visitorId
                              accountId:    accountId
                              visitorData:  visitorData
                              accountData:  accountData];

注:startSessionはいつでも現在の訪問者を更新するために使用できるため、SDKの初期化後に呼び出す必要があります。

 

デバイス接続の設定

Pendoでのアプリケーションのタグ付けとガイドのテストができるようにするには、PendoのURLスキームを追加し、URLスキームを処理するようにアプリを設定して、この設定を完了します。

 

info.plistファイルにPendoのURLスキームを追加します。

1.[アプリターゲット(App Target)]>[情報(Info)]>[URLのタイプ(URL Types)]で、「+」ボタンをクリックして新しいURLを作成します。

2. [識別子(Identifier)]を「pendo-pairing」または任意の名前に設定します。

3. URLスキームにスキームIDを設定します。

  • スキームIDとアプリキーは、[サブスクリプション設定(Subscription Settings)]の[アプリの詳細(App Details)]で参照できます。

 

PendoのURLスキームを扱うアプリの設定

1. アプリケーションAppDelegateファイルに以下のコードを追加します。

@import Pendo;

 

2. application:openURL:options:を追加または修正します。

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id>
*)options
{
    if ([[url scheme] containsString:@"pendo"]) {
        [[PendoManager sharedManager] initWithUrl:url];
        return YES;
    }
    //  your code here …
    return YES;
}

 

2. iOS 13以降をお使いの場合は、SceneDelegateファイルに以下のコードを追加します。

@import Pendo;

 

3. Scenesをお使いの場合は、scene (_:openURLContexts:)を追加または修正します。

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
    NSURL * url = URLContexts.allObjects[0].URL;
    if ([[url scheme] containsString:@"pendo"]) {
        [[PendoManager sharedManager] initWithUrl:url];
    }
}

 

インストールの確認

1. Xcodeを使用してアプリを実行し、デバイスログの中で以下を検索します。

Pendo Mobile SDK was successfully integrated and connected to the server.
(PendoモバイルSDKは正常に統合され、サーバーに接続されました。)


2. [サブスクリプション設定]に、[統合済み(Integrated)]と示されたアプリが表示されていることを確認します。iOSintegrated.png

 

追加の設定

Pendo iOS APIドキュメントには、アプリケーションでPendo SDKを設定するための追加の技術情報が記載されています。

 

トラブルシューティング

互換性の問題については、最新のPendoモバイルSDKリリースノートを参照してください。

作成における問題:Cocoapodsを使用してアプリケーションを作成すると「…Framework not found AFNetworking for architecture x86_64 (null): Linker command failed with exit code 1 (use -v to see invocation)」というリンクエラーが表示される

Cocoapods経由でインストールしたライブラリの中には、フレームワークの使用を許可していないものがあります。サードパーティのライブラリの新しいバージョンを使用するか、上記のようにPendo SDKをマニュアルでインストールするように変更してください。

 

アップロードにおける問題:古いバージョンのXcodeでアプリストアにアップロードするとエラーメッセージが表示される

ERROR ITMS-90087: "Unsupported Architectures. 
The executable for XXX.app/Frameworks/PendoFramework.framework 
contains unsupported architectures '[x86_64, i386]'."
ERROR ITMS-90209: “Invalid Segment Alignment. 
The app binary at ‘XXX.app/Frameworks/InsertFramework.framework/PendoFramework’ 
does not have proper segment alignment.Try rebuilding the app with the latest 
Xcode version.”
ERROR ITMS-90125: “The binary is invalid. 
The encryption info in the LC_ENCRYPTION_INFO load command is either missing 
or invalid, or the binary is already encrypted.This binary does not seem to 
have been built with Apple’s linker.”
WARNING ITMS-90080: "The executable 'XXX.app/Frameworks/PendoFramework.framework'
is not a Position Independent Executable. 
Please ensure that your build settings are configured to create PIE executables.For 
more information refer to Technical Q&A QA1788 - Building a Position Independent 
Executable in the iOS Developer Library."

古いバージョンのXcodeでは、動的ライブラリから未使用のアーキテクチャを自動的に取り除くことはできません。この記事で紹介されているスクリプトを使用して、使用されていないアーキテクチャをマニュアルで削除する手順をビルドチェーンに追加します。