アプリがネイティブでFlutterコンポーネントを使用している場合は、このガイドを使用してアプリ全体を追跡できるようにしてください。
このガイドは、Flutterコンポーネントをネイティブアプリに統合するための予備知識があることを前提としています。予備知識がない場合は、こちらのFlutterの公式ドキュメントを使用して、これを行う方法を学習してください。
pubspec.yamlで以下の操作を行います。依存関係セクションの下にPendoプラグインを追加:
pendo_sdk: 2.21.1(最新バージョンを使用していることを確認してください)
ターミナルで次を実行:flutter pub get
ネイティブアプリフォルダーで次を実行:pod install
iOS
ネイティブコードでSDKを初期化し、プラグインを登録する必要があります。
SDKの初期化(サンプルコード):
Swift
import UIKit
import Flutter
import FlutterPluginRegistrant
import Pendo
class AppDelegate: FlutterAppDelegate {
lazy var flutterEngine = FlutterEngine(name: "my flutter engine")
override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
//Initializing the SDK
let key = "YOUR KEY"
PendoManager.shared().setup(key)
let visitorId = "flutterVisitor"
let accountId = "flutterAccount"
let visitorData = ["Age": 25, "Country": "USA"]
let accountData = ["Tier": "1", "Size": "Enterprise"]
PendoManager.shared().startSession(visitorId, accountId: accountId, visitorData: visitorData, accountData: accountData)
// Runs the default Dart entrypoint with a default Flutter route.
flutterEngine.run()
// Used to connect plugins (only if you have plugins with iOS platform code).
GeneratedPluginRegistrant.register(with: self.flutterEngine)
//Registering the Pendo Plugin
PendoFlutterPlugin.registerWithRegistry(self.flutterEngine)
return super.application(application, didFinishLaunchingWithOptions: launchOptions);
}
PendoFlutterPlugin.hにアクセスするには、アプリのBridging-Header.hに含めてください
#import "PendoFlutterPlugin.h"
Objective C
@import Flutter;
@import Pendo;
#import "PendoFlutterPlugin.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *key = @"YOUR KEY";
[[PendoManager sharedManager] setup:key];
NSString *visitorId = @"flutterVisitor";
NSString *accountId = @"flutterAccount";
NSDictionary *visitorData = @{@"Age": @(25), @"Country": @"USA"};
NSDictionary *accountData = @{@"Tier": @"1", @"Size": @"Enterprise"};
[[PendoManager sharedManager] startSession:visitorId accountId:accountId visitorData:visitorData accountData:accountData];
FlutterEngine *flutterEngine = [[FlutterEngine alloc] initWithName:@"my flutter engine"];
// Runs the default Dart entrypoint with a default Flutter route.
[flutterEngine run];
// Used to connect plugins (only if you have plugins with iOS platform code).
[GeneratedPluginRegistrant registerWithRegistry:flutterEngine];
//Registering the Pendo Plugin
[PendoFlutterPlugin registerWithRegistry:flutterEngine];
return YES;
}
AppDelegateファイルで、openURL関数を追加または変更します。
Swift
func application(_ app: UIApplication,open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if url.scheme?.range(of: "pendo") != nil {
PendoManager.shared().initWith(url)
return true
}
// your code here...
return true
}
Objective C
- (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
return YES;
}
これで、Dart側からPendoのトラックイベントが使えるようになりました。
import 'package:pendo_sdk/pendo_sdk.dart';
await PendoFlutterPlugin.track('name', { 'firstProperty': 'firstPropertyValue', 'secondProperty': 'secondPropertyValue'});
Android
1. Pendoリポジトリをbuild.gradleに追加します
repositories {
maven {
url "https://software.mobile.pendo.io/artifactory/androidx-release"
}
mavenCentral()
}
2. 依存関係としてPendoを追加します
dependencies {
implementation group:'sdk.pendo.io' , name:'pendoIO', version:'2.21.+', changing:true
}
3. 次のアクティビティをアプリケーション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="YOUR-SCHEME"/>
</intent-filter>
</activity>
4. ネイティブからSDKを初期化し、プラグインを登録します:
SDK初期化(サンプルコード):
Kotlin
package io.tsh.flutterloginembedding
import android.app.Application
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.FlutterEngineCache
import io.flutter.embedding.engine.dart.DartExecutor
import io.flutter.plugins.GeneratedPluginRegistrant
import sdk.pendo.io.Pendo
import sdk.pendo.io.Pendo.PendoInitParams
import sdk.pendo.io.Pendo.PendoOptions
import java.util.*
class App : Application() {
companion object {
const val FLUTTER_ENGINE_ID = "newLoginEngine"
}
override fun onCreate() {
super.onCreate()
// Instantiate a FlutterEngine.
val flutterEngine = FlutterEngine(this)
// Start executing Dart code to pre-warm the FlutterEngine.
flutterEngine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
)
// Cache the FlutterEngine to be used by FlutterActivity.
FlutterEngineCache
.getInstance()
.put(FLUTTER_ENGINE_ID, flutterEngine)
val pendoAppKey = "YOUR_KEY"
Pendo.setup(
this,
pendoAppKey,
null,
null)
val visitorId = "flutterVisitor"
val accountId = "flutterAccount"
val visitorData = HashMap<String, Any>()
visitorData.put("age", 27)
visitorData.put("country", "USA")
val accountData = HashMap<String, Any>()
accountData.put("Tier", 1)
accountData.put("Size", "Enterprise")
Pendo.startSession(
visitorId,
accountId,
visitorData,
accountData )
// Used to connect plugins
GeneratedPluginRegistrant.registerWith(flutterEngine)
}
}