アプリがネイティブでFlutterコンポーネントを使用している場合は、このガイドを使用してアプリ全体を追跡できるようにしてください。
このガイドは、Flutterコンポーネントをネイティブアプリに統合するための予備知識があることを前提としています。予備知識がない場合は、こちらのFlutterの公式ドキュメントを使用して、これを行う方法を学習してください。
pubspec.yamlで、依存関係セクションの下にPendoプラグインを追加してください:
pendo_sdk: ^2.10.0(最新バージョンを使用していることを確認してください)
ターミナルで次を実行: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"
let params = PendoInitParams()
params.visitorId = "flutterV1"
params.accountId = "flutterV1"
PendoManager.shared().initSDK(key, initParams: params)
// 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"
Obj-C
@import Flutter;
@import Pendo;
#import "PendoFlutterPlugin.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
PendoInitParams *initParams = [[PendoInitParams alloc] init];
[initParams setVisitorId:@"flutterV1"];
[initParams setVisitorId:@"flutterV1"];
[[PendoManager sharedManager] initSDK:@"YOUR_KEY" initParams: initParams];
FlutterEngine *flutterEngine = [[FlutterEngine alloc] initWithName:@"my flutter engine"];
[flutterEngine run];
[PendoFlutterPlugin registerWithRegistry:flutterEngine];
return YES;
}
これで、Dart側からPendoのトラックイベントが使えるようになりました。
import 'package:pendo_sdk/pendo_sdk.dart';
PendoFlutterPlugin.track('Track Event Send', {})}
Android
Kotlin
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.10.+', changing:true
}
3. 次のアクティビティをアプリケーションAndroidManifest.xmlのタグに追加します。
<activity android:name="sdk.pendo.io.activities.PendoGateActivity" android:launchMode="singleInstance">
<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-SCHEME"/>
</intent-filter>
</activity>
4.その後、ネイティブからSDKを初期化し、プラグインを登録する必要があります。
SDKの初期化(サンプルコード):
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 pendoParams = PendoInitParams()
pendoParams.accountId = "David 123"
pendoParams.visitorId = "David 123"
// send Visitor Level Data
val userData = HashMap<String, Any>()
userData["age"] = 27
userData["country"] = "USA"
pendoParams.visitorData = userData
//send Account Level Data
val accountData = HashMap<String, Any>()
accountData["Tier"] = 1
accountData["Size"] = "Enterprise"
pendoParams.accountData = accountData
val pendoAppKey = "PENDO_APP_KEY"
Pendo.initSDK(
this,
pendoAppKey,
pendoParams)
// Used to connect plugins
GeneratedPluginRegistrant.registerWith(flutterEngine)
}
}