Flutter订阅类应用因缺少EULA链接被App Store Connect拒审咨询
带内购的Flutter应用App Store EULA拒审解决方案
拒审核心原因:苹果针对含自动续期订阅的应用,要求EULA链接不能仅放在首次启动引导页,审核人员不会默认走完首次启动流程验证,只会优先检查两个位置:一是App Store Connect后台的EULA配置项,二是应用内订阅购买页面的明显入口,当前配置遗漏了这两个核心位置的要求。
1. 优先补全App Store Connect后台配置
- 登录App Store Connect,进入对应应用的「应用信息」页面
- 下滑到「通用信息」板块,找到「最终用户许可协议」输入框,填入公网可访问的EULA在线链接即可,这一步是很多开发者容易遗漏的必填项,并非仅在应用内配置就符合要求。
2. 应用内必须新增的EULA入口
必须在订阅购买页面的明显位置新增EULA入口,建议放在订阅按钮下方,和隐私政策入口并列展示,不能仅藏在首次启动引导、设置页等深层路径。
可选补充:在应用设置页新增EULA入口作为兜底,进一步降低拒审概率。
3. Flutter侧适配代码示例
3.1 订阅页协议入口组件
// 订阅页底部可点击的协议入口 Row( mainAxisAlignment: MainAxisAlignment.center, children: [ GestureDetector( onTap: () => _launchUrl("你的EULA在线链接"), child: const Text( "用户许可协议", style: TextStyle(color: Colors.grey, fontSize: 12), ), ), const SizedBox(width: 20), GestureDetector( onTap: () => _launchUrl("你的隐私政策在线链接"), child: const Text( "隐私政策", style: TextStyle(color: Colors.grey, fontSize: 12), ), ), ], )
3.2 跳转链接工具方法
需先引入官方的url_launcher库处理链接跳转:
import 'package:url_launcher/url_launcher.dart'; Future<void> _launchUrl(String targetUrl) async { final Uri uri = Uri.parse(targetUrl); if (await canLaunchUrl(uri)) { await launchUrl(uri); } }
3.3 pubspec.yaml依赖配置
dependencies: flutter: sdk: flutter url_launcher: ^6.2.0 # 可替换为最新稳定版
4. 提交前验证要点
- 确保EULA链接公网可访问,不需要登录权限,境外网络也可正常打开
- 不要将EULA仅做成应用内本地弹窗形式,必须是可跳转的有效在线链接
- 提交审核时可在备注栏说明EULA的位置:「应用内订阅购买页底部、首次启动引导页均有EULA入口,后台已同步配置EULA链接」,减少审核人员查找成本
内容的提问来源于stack exchange,提问作者kris
相关产品推荐
相关产品推荐

