Flutter联盟营销插件insert_affiliate_flutter_sdk的使用

Flutter联盟营销插件insert_affiliate_flutter_sdk的使用

插件概述

Insert Affiliate Flutter SDK 是为Flutter应用程序设计的,旨在与 Insert Affiliate平台 轻松集成。该插件简化了iOS应用中带有应用内购买(In-App Purchases)的联盟营销,使开发者能够为联盟跟踪和货币化创建无缝的用户体验。

功能特性

  • 唯一设备ID: 创建一个唯一ID以匿名方式将购买与用户关联起来进行跟踪。
  • 联盟标识符管理: 基于用户特定链接设置和检索联盟标识符。
  • 应用内购买初始化: 简单地重新初始化应用内购买,并可以选择使用联盟标识符进行验证。

开始使用

要开始使用 Insert Affiliate Flutter SDK,请遵循以下步骤:

  1. 安装SDK
  2. 在主Dart文件中初始化SDK
  3. 设置应用内购买
  4. 设置深度链接
  5. 根据需求使用其他功能,如事件跟踪等

安装

在项目的 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  flutter:
    sdk: flutter
  insert_affiliate_flutter_sdk: <最新版本>
  shared_preferences: <最新版本>
  http: <最新版本>

然后在终端运行以下命令以获取所需的包:

$ flutter pub get

基本用法

导入SDK

在主Dart文件中导入SDK:

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:insert_affiliate_flutter_sdk/insert_affiliate_flutter_sdk.dart';

在Main.dart中初始化

确保在应用程序生命周期的早期初始化 Insert Affiliate Flutter SDK,通常是在 Main.dart 文件中完成。

import 'package:insert_affiliate_flutter_sdk/insert_affiliate_flutter_sdk.dart';

late final InsertAffiliateFlutterSDK insertAffiliateSdk;

void main() async {
    // 确保Flutter已初始化后再运行异步代码
    WidgetsFlutterBinding.ensureInitialized();

    // 重要:您的深度链接平台(例如Branch.io)以及收据验证平台(如果使用第三方平台如RevenueCat/Iaptic),必须在Insert Affiliate SDK之前初始化。

    // 初始化Insert Affiliate SDK
    insertAffiliateSdk = InsertAffiliateFlutterSDK(
        companyCode: "{{ your_company_code }}",
    );

    runApp(MyApp());
}
  • {{ your_company_code }} 替换为您Insert Affiliate账户关联的唯一公司代码。您可以在仪表板的设置中找到此代码。

应用内购买设置 [必需]

Insert Affiliate需要一个收据验证平台来验证应用内购买。您必须选择我们的支持合作伙伴之一:

选项1:RevenueCat集成

代码设置

  1. 安装RevenueCat SDK - 首先,按照RevenueCat SDK安装指南设置应用内购买和订阅。
  2. 修改初始化代码 - 更新您初始化深度链接(例如Branch.io)和RevenueCat的文件,包含对 insertAffiliateSdk.returnInsertAffiliateIdentifier() 的调用。这确保每次应用启动或深度链接点击时都会传递Insert Affiliate标识符到RevenueCat。
  3. 实现示例
import 'dart:async';
import 'package:purchases_flutter/purchases_flutter.dart';
import 'package:insert_affiliate_flutter_sdk/insert_affiliate_flutter_sdk.dart';

class _MyAppState extends State<MyApp> {
    @override
    void initState() {
        super.initState();
        _initializeAsyncDependencies();
    }

    Future<void> _initializeAsyncDependencies() async {
        // 第一步:初始化RevenueCat
        await _initializeRevenueCat();

        // 第二步:处理初始联盟标识符
        handleAffiliateIdentifier();

        // 第三步:监听深度链接(以Branch.io为例)
        _branchStreamSubscription = FlutterBranchSdk.listSession().listen((data) {
            if (data.containsKey("+clicked_branch_link") && data["+clicked_branch_link"] == true) {
                final referringLink = data["~referring_link"];
                insertAffiliateSdk.setInsertAffiliateIdentifier(referringLink);

                // 处理深度链接点击后的联盟标识符
                handleAffiliateIdentifier();
            }
        }, onError: (error) {
            print('listSession error: ${error.toString()}');
        });
    }

    void handleAffiliateIdentifier() {
        insertAffiliateSdk.returnInsertAffiliateIdentifier().then((value) {
            if (value != null && value.isNotEmpty) {
                Purchases.logIn(value); // 使用联盟ID登录到RevenueCat
            }
        });
    }
}

Webhook设置

接下来,您需要设置一个Webhook,以便我们可以直接与RevenueCat通信以跟踪联盟购买。

  1. 转到RevenueCat并创建一个新的Webhook:

    • URL: https://api.insertaffiliate.com/v1/api/revenuecat-webhook
    • 授权头: 使用您Insert Affiliate仪表板中的值(您将在步骤4中获取此值)
  2. 在您的Insert Affiliate仪表板设置中:

    • 导航到验证设置
    • 将应用内购买验证方法设置为 RevenueCat
  3. 返回您的Insert Affiliate仪表板:

    • 查找 RevenueCat Webhook Authentication Header
    • 复制此值
    • 将其作为授权头值粘贴到RevenueCat Webhook配置中

选项2:Iaptic集成

首先,完成AIP购买Flutter库的设置。然后修改您的 main.dart 文件:

import 'package:in_app_purchase/in_app_purchase.dart';
import 'package:insert_affiliate_flutter_sdk/insert_affiliate_flutter_sdk.dart';

late final InsertAffiliateFlutterSDK insertAffiliateSdk;

class _MyAppState extends State<MyApp> {
    final InAppPurchase _iap = InAppPurchase.instance;

    @override
    void initState() {
        super.initState();
        _purchaseStream.listen((List<PurchaseDetails> purchaseDetailsList) {
          _listenToPurchaseUpdated(purchaseDetailsList);
        });
    }

    void _listenToPurchaseUpdated(List<PurchaseDetails> purchaseDetailsList) async {
        for (var purchaseDetails in purchaseDetailsList) {
            if (purchaseDetails.status == PurchaseStatus.purchased) {
                final jsonIapPurchase = {
                    'transactionReceipt': purchaseDetails.verificationData.localVerificationData,
                    'orderId': purchaseDetails.purchaseID,
                    'purchaseToken': purchaseDetails.verificationData.serverVerificationData,
                    'signature': purchaseDetails.verificationData.localVerificationData,
                    'applicationUsername': await insertAffiliateSdk.returnInsertAffiliateIdentifier(),
                };

                final isValid = await insertAffiliateSdk.validatePurchaseWithIapticAPI(
                    jsonIapPurchase,
                    "{{ your_iaptic_app_id }}",
                    "{{ your_iaptic_app_name }}",
                    "{{ your_iaptic_public_key }}"
                );

                // 可选:根据需要处理 `isValid` 的结果
            }
        }
    }
}

替换以下内容:


深度链接设置 [必需]

Insert Affiliate需要一个深度链接平台来为您的联盟创建链接。我们的平台可以与任何深度链接提供商配合使用,您只需遵循以下步骤:

  1. 创建深度链接 在您选择的第三方平台上创建深度链接,并在联盟注册时将其传递给我们。
  2. 处理深度链接点击 在您的应用中通过传递点击的链接:
    insertAffiliateSdk.setInsertAffiliateIdentifier(data["~referring_link"]);
    

使用Branch.io进行深度链接

要使用Branch.io设置深度链接,请按照以下步骤操作:

  1. 在Branch中创建深度链接并在联盟注册时传递给我们。
  2. 修改 Main.dart 中的深度链接处理逻辑
    • 在设置好Branch集成后,在iOS应用中添加以下代码以初始化Insert Affiliate SDK:
      import 'package:flutter_branch_sdk/flutter_branch_sdk.dart';
      import 'package:insert_affiliate_flutter_sdk/insert_affiliate_flutter_sdk.dart';
      
      late final InsertAffiliateFlutterSDK insertAffiliateSdk;
      
      class _MyAppState extends State<MyApp> {
      
          late StreamSubscription<Map> _branchStreamSubscription;
      
          @override
          void initState() {
              super.initState();
      
              _branchStreamSubscription = FlutterBranchSdk.listSession().listen((data) {
                  if (data.containsKey("+clicked_branch_link") && data["+clicked_branch_link"] == true) {
                      insertAffiliateSdk.setInsertAffiliateIdentifier(data["~referring_link"]);
                  }
              }, onError: (error) {
                  print('Branch session error: ${error.toString()}');
              });
          }
      }
      

其他功能

1. 事件跟踪(测试版)

InsertAffiliateFlutter SDK 现在包括一个事件跟踪的测试版功能。使用事件跟踪来记录关键用户行为,例如注册、购买或推荐。这有助于:

  • 理解用户行为。
  • 衡量营销活动的有效性。
  • 激励联盟对于最终用户采取的指定操作(不仅仅是应用内购买)。

在此阶段,我们无法保证此功能完全防篡改或防操纵。

使用 trackEvent

要跟踪事件,请使用 trackEvent 函数。确保首先设置联盟标识符;否则,事件跟踪将无法工作。以下是示例:

import 'package:insert_affiliate_flutter_sdk/insert_affiliate_flutter_sdk.dart';

ElevatedButton(
  onPressed: () {
    insertAffiliateSdk.trackEvent(eventName: "yourEventIdentifier")
      .then((_) => print('Event tracked successfully!'))
      .catchError((error) => print('Error tracking event: $error'));
  },
  child: Text("Track Test Event"),
);

2. 短码(测试版)

什么是短码?

短码是联盟可以用来推广产品或订阅的独特10个字符的字母数字标识符。这些代码非常适合影响者或合作伙伴,比长URL更容易分享。

示例用例:一位影响者在其TikTok视频描述中推广了一个订阅,短码为 “JOIN123456”。当用户在您的应用中输入此代码时,应用会将订阅跟踪回该影响者以进行佣金支付。

更多详细信息,请访问Insert Affiliate短码文档

设置短码

使用 setShortCode 方法将短码与联盟关联起来。这适用于用户通过输入字段、弹出窗口或其他UI元素输入短码的场景。

短码必须满足以下条件:

  • 恰好 10个字符长
  • 包含仅 字母和数字(字母数字字符)。
  • 替换 {{ user_entered_short_code }} 为用户通过您选择的输入方法输入的短码,即输入字段/弹出窗口元素。

示例集成

以下是用户可以通过输入短码并与联盟帐户关联的示例SwiftUI实现:

late final InsertAffiliateFlutterSDK insertAffiliateSdk;

ElevatedButton(
    onPressed: () => insertAffiliateSdk.setShortCode("B2SC6VRSKQ"),
    child: Text("Set Short Code"),
)

示例用法

设置联盟标识符(用于跟踪):

InsertAffiliateSwift.setInsertAffiliateIdentifier(referringLink: "your_affiliate_link")

更多关于Flutter联盟营销插件insert_affiliate_flutter_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter联盟营销插件insert_affiliate_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


insert_affiliate_flutter_sdk 是一个用于在 Flutter 应用中集成联盟营销功能的插件。通过该插件,开发者可以轻松地在应用中集成联盟营销链接,跟踪用户的点击和转化,从而为应用带来额外的收入来源。

以下是如何使用 insert_affiliate_flutter_sdk 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 insert_affiliate_flutter_sdk 的依赖。

dependencies:
  flutter:
    sdk: flutter
  insert_affiliate_flutter_sdk: ^1.0.0  # 请根据实际情况使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化 SDK

在你的 Flutter 应用启动时,通常是在 main.dart 文件中,初始化 insert_affiliate_flutter_sdk

import 'package:flutter/material.dart';
import 'package:insert_affiliate_flutter_sdk/insert_affiliate_flutter_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 SDK
  await InsertAffiliateFlutterSdk.init(
    apiKey: 'YOUR_API_KEY',
    appId: 'YOUR_APP_ID',
    userId: 'YOUR_USER_ID',  // 可选
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Affiliate Demo',
      home: HomeScreen(),
    );
  }
}

3. 创建联盟营销链接

你可以使用 InsertAffiliateFlutterSdk 提供的 API 来创建联盟营销链接。

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Affiliate Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 创建联盟营销链接
            String affiliateLink = await InsertAffiliateFlutterSdk.createAffiliateLink(
              productId: 'PRODUCT_ID',
              campaignId: 'CAMPAIGN_ID',  // 可选
            );

            // 打开链接或分享链接
            print('Affiliate Link: $affiliateLink');
            // 你可以使用 url_launcher 等插件打开链接
          },
          child: Text('Create Affiliate Link'),
        ),
      ),
    );
  }
}

4. 跟踪点击和转化

insert_affiliate_flutter_sdk 会自动跟踪用户的点击和转化。你可以通过后台管理界面查看相关的统计数据。

5. 处理回调(可选)

你可以设置回调函数来处理用户的点击和转化事件。

InsertAffiliateFlutterSdk.setClickCallback((clickData) {
  print('User clicked on affiliate link: $clickData');
});

InsertAffiliateFlutterSdk.setConversionCallback((conversionData) {
  print('User converted: $conversionData');
});
回到顶部