Flutter应用内跳转管理插件flutter_app_host的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter应用内跳转管理插件flutter_app_host的使用

flutter_app_host 插件允许你将你的Android .apk 和iOS .ipa 包直接上传到AppHost托管服务。然后,你可以简单地通过分享你的应用的私有链接来与测试人员和企业应用用户共享。

示例用法

上传最新的Android发布版本

>> flutter packages pub run flutter_app_host apk-release

结果

Upload complete! 安装您的应用:

https://appho.st/d/#/d3Yg88ve

安装

  1. 在项目 pubspec.yaml 文件的 dev_dependencies 中添加 flutter_app_host
  2. https://appho.st 注册一个免费帐户
  3. 访问仪表板页面并生成API密钥以启用私有上传API
  4. 添加一个应用程序到你的帐户(设置名称、标志等)
  5. 在新应用程序的页面上,滚动到私有API部分并下载配置文件
  6. 将配置文件重命名为 .apphost 并移动到本地项目的根目录(可能还需要将其添加到 .gitignore

使用方法

>> flutter packages pub run flutter_app_host

该命令会列出所有检测到的构建输出及其相关的上传命令:

Found the following application builds:

* Android: release build, version 1.1.0
>> flutter packages pub run flutter_app_host apk-release

* Android: debug build, version 1.1.0
>> flutter packages pub run flutter_app_host apk-debug

手动上传Android构建存档(.apk文件):
>> flutter packages pub run flutter_app_host apk <version> <filename>

手动上传iOS构建存档(.ipa文件):
https://flutter.dev/docs/deployment/ios#create-a-build-archive
>> flutter packages pub run flutter_app_host ipa <version> <filename> <ios_bundle_identifier>

配置

该插件依赖于一个配置文件 .apphost,该文件位于调用它的目录中。这是一个JSON文档,结构如下:

{
  "user_id": "...",
  "app_id": "...",
  "key": "my_private_api_key...",
  "ios_bundle_identifier": "com.mycompany.myapp..."
}

最后一个字段 ios_bundle_identifier 是可选的。它可以用来避免在上传iOS .ipa 存档时指定捆绑标识符。

示例代码

显示可用命令

>> flutter packages pub run flutter_app_host

输出

Found the following application builds:

* Android: release build, version 1.1.0
>> flutter packages pub run flutter_app_host apk-release

* Android: debug build, version 1.1.0
>> flutter packages pub run flutter_app_host apk-debug

手动上传Android构建存档(.apk文件):
>> flutter packages pub run flutter_app_host apk <version> <filename>

手动上传iOS构建存档(.ipa文件):
https://flutter.dev/docs/deployment/ios#create-a-build-archive
>> flutter packages pub run flutter_app_host ipa <version> <filename> <ios_bundle_identifier>

上传最近的Android发布版本

>> flutter packages pub run flutter_app_host apk-release

输出

Upload complete! 安装您的应用:

https://appho.st/d/#/d3Yg88ve

手动上传Android应用包

>> flutter packages pub run flutter_app_host apk 1.2.1 my_app_file.apk

手动上传iOS应用包

Flutter为iOS构建的应用必须从XCode签名和存档后才能分发。有关更多信息,请参阅创建构建存档。一旦你有了你的应用包(.ipa 文件),可以使用以下命令上传它。最后一个参数 ios_bundle_identifier 应该匹配XCode用于提供你的应用的捆绑标识符。

>> flutter packages pub run flutter_app_host ipa 1.2.1 runner.ipa com.mycompany.appname

更多关于Flutter应用内跳转管理插件flutter_app_host的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用内跳转管理插件flutter_app_host的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter应用中使用flutter_app_host插件进行应用内跳转管理的示例代码。flutter_app_host插件允许你在Flutter应用中处理URL跳转,无论是跳转到外部浏览器还是应用内的特定页面。

首先,确保你的pubspec.yaml文件中已经添加了flutter_app_host依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_app_host: ^0.2.0  # 请注意版本号,使用最新版本

然后,运行flutter pub get来安装依赖。

接下来,我们来看一个完整的示例,展示如何使用flutter_app_host进行应用内跳转管理。

主应用代码(main.dart)

import 'package:flutter/material.dart';
import 'package:flutter_app_host/flutter_app_host.dart';
import 'second_screen.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter App Host Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      routes: {
        '/': (context) => MyHomePage(),
        '/second': (context) => SecondScreen(),
      },
      onGenerateRoute: (RouteSettings settings) {
        // 你可以在这里添加自定义的路由处理逻辑
        if (settings.name == '/custom') {
          return MaterialPageRoute(builder: (context) => SecondScreen());
        }
        return null;
      },
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  FlutterAppHost _appHost;

  @override
  void initState() {
    super.initState();
    _appHost = FlutterAppHost(
      navigator: Navigator.of(context),
      initialUrl: '/',
      routes: {
        '/second': (url) => Navigator.pushNamed(context, '/second'),
        '/custom': (url) => Navigator.pushNamed(context, '/custom'),
        // 你可以在这里添加更多的路由处理
      },
      onUnknownUrl: (url) {
        // 处理未知URL
        print('Unknown URL: $url');
      },
    );

    // 启动应用主机
    _appHost.start();
  }

  @override
  void dispose() {
    // 停止应用主机
    _appHost.stop();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter App Host Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () => _appHost.openUrl('/second'),
              child: Text('Go to Second Screen'),
            ),
            ElevatedButton(
              onPressed: () => _appHost.openUrl('/custom'),
              child: Text('Go to Custom Route'),
            ),
          ],
        ),
      ),
    );
  }
}

第二个屏幕代码(second_screen.dart)

import 'package:flutter/material.dart';

class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Second Screen'),
      ),
      body: Center(
        child: Text('Welcome to the Second Screen!'),
      ),
    );
  }
}

解释

  1. 依赖管理:在pubspec.yaml中添加flutter_app_host依赖。
  2. 初始化FlutterAppHost:在MyHomePageinitState方法中初始化FlutterAppHost,并设置路由处理逻辑。
  3. 启动和停止应用主机:在initStatedispose方法中分别启动和停止FlutterAppHost
  4. 处理URL跳转:通过_appHost.openUrl方法处理应用内的URL跳转。
  5. 定义路由:在MaterialApproutesFlutterAppHostroutes中定义应用内的路由。

这个示例展示了如何使用flutter_app_host插件在Flutter应用中管理应用内跳转。你可以根据需要扩展这个示例,添加更多的路由和处理逻辑。

回到顶部