Flutter应用内跳转管理插件flutter_app_host的使用
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
安装
- 在项目
pubspec.yaml
文件的dev_dependencies
中添加flutter_app_host
- 在 https://appho.st 注册一个免费帐户
- 访问仪表板页面并生成API密钥以启用私有上传API
- 添加一个应用程序到你的帐户(设置名称、标志等)
- 在新应用程序的页面上,滚动到私有API部分并下载配置文件
- 将配置文件重命名为
.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
更多关于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!'),
),
);
}
}
解释
- 依赖管理:在
pubspec.yaml
中添加flutter_app_host
依赖。 - 初始化FlutterAppHost:在
MyHomePage
的initState
方法中初始化FlutterAppHost
,并设置路由处理逻辑。 - 启动和停止应用主机:在
initState
和dispose
方法中分别启动和停止FlutterAppHost
。 - 处理URL跳转:通过
_appHost.openUrl
方法处理应用内的URL跳转。 - 定义路由:在
MaterialApp
的routes
和FlutterAppHost
的routes
中定义应用内的路由。
这个示例展示了如何使用flutter_app_host
插件在Flutter应用中管理应用内跳转。你可以根据需要扩展这个示例,添加更多的路由和处理逻辑。