Flutter集成Tiki平台功能插件tiki_sdk_flutter的使用

Flutter集成Tiki平台功能插件tiki_sdk_flutter的使用

TIKI SDK (Flutter) —数据授权

All Contributors

TIKI SDK for Flutter 使在您的应用程序中添加数据授权变得简单。这是用户将与之交互以接受(或拒绝)数据授权的客户端组件。TIKI 的 SDK 使用加密哈希创建不可变的数字签名许可记录,形成审计跟踪。使用开发人员友好的数据结构和 API 程序化地消费记录并强制执行条款。

此库包括可配置的预构建 UI 流程/元素和用于构建自定义体验的本地低级 API。

开始使用我们的 📚 SDK 文档,或直接跳转到 📘 API 参考

安装

注意:开始之前,您需要一个发布 ID。创建一个发布 ID 是免费的;只需登录到我们的 🧑‍💻 开发者控制台 并创建一个新项目。

使用 Flutter 安装依赖:

flutter pub add tiki_sdk_flutter

这将在您的包的 pubspec.yaml 中添加一行(并运行隐式的 flutter pub get):

dependencies:
  tiki_sdk_flutter: ^2.1.6

确保您的项目的 Android minSdkVersion 至少设置为 19[project]/android/app/build.gradle 中。

android {
    ...
    defaultConfig {
        ...
        minSdkVersion 19
        ...
    }
}

就这样,真的就这么简单。

初始化

使用 TIKI 预构建的 UI 和自定义数据授权仅需 1 个构建器函数即可初始化 TIKI SDK。

await TikiSdk.config()
  .theme
  	.primaryTextColor(Color(0xFF1C0000))
  	.primaryBackgroundColor(Color(0xFFFFFFFF))
  	.secondaryBackgroundColor(Color(0xFFF6F6F6))
  	.accentColor(Color(0xFF00B277))
  	.fontFamily("Space Grotesk")
  	.and()
  .offer
  	.description("Trade your IDFA (kind of like a serial # for your phone) for a discount.")
  	.reward(Image.asset("<path>/reward.png"))
  	.bullet("Learn how our ads perform", true)
  	.bullet("Reach you on other platforms", false)
  	.bullet("Sold to other companies", false)
  	.terms("<path>/terms.md")
  	.ptr("db2fd320-aed0-498e-af19-0be1d9630c63")
  	.tag(TitleTag.deviceId())
  	.use([LicenseUsecase.attribution()])
  	.add()
  .initialize("<your-publishing-id>", "<your-user-id>");

阅读有关样式设置、选择元数据和设计您的授权的信息请参阅我们的 📚 SDK 文档

UI 流程

SDK 包括两个预构建的流程:present()settings()。使用 present() 向用户展示新的数据授权。

TikiSdk.present(context);

使用 settings() 渲染…设置屏幕,让用户可以改变主意并退出现有的授权协议。

TikiSdk.settings(context);

贡献

  • 使用 GitHub Issues 报告任何您发现的错误或请求增强功能。
  • 如果您想与我们的团队或其他活跃贡献者联系,请加入我们的 👾 Discord
  • 如果您打算向此项目添加代码,请使用 conventional commits

项目结构

  • /lib:库的主要实现源。
    • /ui:声明式 UI 流程和小部件。
    • /assets:捆绑的资源,如图形和字体。
  • /integration_tests:需要设备或模拟器。
  • /example_app:简单的示例应用程序,演示如何配置和添加 SDK 到基本的 Flutter 应用程序。

贡献者 ✨

感谢这些杰出的人们:

贡献者 角色
Ricardo Gonçalves 代码、文档、示例、维护、测试
Mike Audi 代码、审查拉取请求
Harshit 代码、测试
Vigneshsanath 设计

本项目遵循 all-contributors 规范。任何形式的贡献都欢迎!


示例代码

import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:tiki_sdk_flutter/tiki_sdk.dart';

const String origin = "com.mytiki.tiki_sdk_example";
const String publishingId = "e12f5b7b-6b48-4503-8b39-28e4995b5f88";

void main() async {
  await TikiSdk.config()
      .theme
        .fontFamily("SpaceGrotesk")
        .and()
      .offer
        .reward(Image.asset("lib/ui/assets/images/offer_sample.png"))
        .ptr("test_offer")
        .bullet("Learn how our ads perform ", true)
        .bullet("Reach you on other platforms", false)
        .bullet("Sold to other companies", false)
        .use([LicenseUsecase.support()])
        .tag(TitleTag.advertisingData())
        .description("Trade your IDFA (kind of like a serial # for your phone) for a discount.")
        .terms("lib/ui/assets/terms.md")
        .permission(Permission.camera)
        .duration(const Duration(days: 365))
        .add()
      .initialize(publishingId, "test_user_123", onComplete: () => runApp(const MyApp()));
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
        title: 'TIKI SDK 示例应用',
        home: Scaffold(body: Center(child: ExampleButtons())));
  }
}

class ExampleButtons extends StatelessWidget {
  const ExampleButtons({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) => Column(
    mainAxisSize: MainAxisSize.min,
    crossAxisAlignment: CrossAxisAlignment.center,
    children: [
      ElevatedButton(onPressed: () => TikiSdk.present(context), child: const Text("开始")),
      ElevatedButton(onPressed: () => TikiSdk.settings(context), child: const Text("设置"))
    ],
  );
}

更多关于Flutter集成Tiki平台功能插件tiki_sdk_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成Tiki平台功能插件tiki_sdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


要在Flutter应用中集成Tiki平台的tiki_sdk_flutter插件,你需要按照以下步骤进行。假设你已经有一个Flutter项目,并且对Flutter开发有一定的了解。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  tiki_sdk_flutter: ^1.0.0  # 请检查最新版本

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

2. 配置平台

Android

android/app/build.gradle文件中,确保你启用了androidx并设置了最低SDK版本。

android {
    ...
    defaultConfig {
        ...
        minSdkVersion 21  // 确保最低SDK版本为21或更高
        ...
    }
    ...
}

iOS

ios/Podfile中,确保你设置了iOS的最低部署目标。

platform :ios, '11.0'  // 确保最低部署目标为11.0或更高

然后运行pod install来更新iOS的依赖。

3. 初始化Tiki SDK

在你的Flutter应用中初始化Tiki SDK。通常,你可以在main.dart中完成这个操作。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化Tiki SDK
  await TikiSdkFlutter.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的Tiki API Key
    baseUrl: 'https://your-tiki-api-endpoint.com',  // 替换为你的Tiki API基础URL
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Tiki SDK Example',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Tiki SDK Example'),
        ),
        body: Center(
          child: Text('Tiki SDK is initialized!'),
        ),
      ),
    );
  }
}

4. 使用Tiki SDK功能

根据tiki_sdk_flutter插件的文档,你可以调用各种功能。例如,获取用户信息、授权、或进行其他操作。

void fetchUserInfo() async {
  try {
    var userInfo = await TikiSdkFlutter.getUserInfo();
    print('User Info: $userInfo');
  } catch (e) {
    print('Error fetching user info: $e');
  }
}

5. 处理权限和隐私

确保你的应用遵循Tiki平台的隐私政策和权限要求。你可能需要在AndroidManifest.xmlInfo.plist中添加必要的权限声明。

6. 测试和发布

在集成完成后,确保在模拟器和真实设备上测试应用。确保所有功能正常工作后,你可以将应用发布到应用商店。

7. 查看官方文档

由于tiki_sdk_flutter插件的具体功能和使用方法可能会有所不同,建议查看官方文档以获取最新的使用指南和API参考。

示例代码

以下是一个简单的示例,展示了如何初始化和使用tiki_sdk_flutter插件:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化Tiki SDK
  await TikiSdkFlutter.initialize(
    apiKey: 'YOUR_API_KEY',
    baseUrl: 'https://your-tiki-api-endpoint.com',
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Tiki SDK Example',
      home: TikiExamplePage(),
    );
  }
}

class TikiExamplePage extends StatefulWidget {
  [@override](/user/override)
  _TikiExamplePageState createState() => _TikiExamplePageState();
}

class _TikiExamplePageState extends State<TikiExamplePage> {
  String _userInfo = '';

  void _fetchUserInfo() async {
    try {
      var userInfo = await TikiSdkFlutter.getUserInfo();
      setState(() {
        _userInfo = userInfo.toString();
      });
    } catch (e) {
      setState(() {
        _userInfo = 'Error: $e';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Tiki SDK Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_userInfo),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _fetchUserInfo,
              child: Text('Fetch User Info'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部