Flutterコンポーネントを使用したネイティブアプリケーション

アプリがネイティブで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)
    }
}