uni-app iOS 17系统无法自启动APP

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app iOS 17系统无法自启动APP

操作步骤:

  • 发行->原生APP-云打包->运行->运行到iOSAPP基座->选择iOS设备

预期结果:

  • 应用【xxx】已启动

实际结果:

  • 无法自动启动app,请在手机端点击运行基座图标手动启动。

bug描述:

  • iPhone 15 Pro(iOS17.1.2)运行自定义基座包提示“无法自动启动app,请在手机端点击运行基座图标手动启动。”
  • 但是iPhone11(iOS 15.7.1)正常
  • 系统环境:Mac OS 13.6.1,Xcode15.0.1,HBuilderX 3.98

报错如下:(已自查,系统环境正常)

正在建立手机连接...
10:39:07.478 正在安装手机端自定义基座...
10:39:07.513 运行方式:打开 HBuilderX, 导入 dist/dev/app-plus 运行。
10:39:13.651 安装自定义基座App完成
10:39:13.651 正在同步手机端程序文件...
10:39:18.728 同步手机端程序文件完成
10:39:18.861 无法自动启动app,请在手机端点击运行基座图标手动启动。详情:https://uniapp.dcloud.net.cn/tutorial/run/run-app.html#ios-app-automatically-open

项目信息表

信息
产品分类 uniapp/App
PC开发环境 Mac
PC版本号 13.6.1
手机系统 iOS
手机版本号 iOS 17
手机厂商 苹果
手机机型 iPhone 15 Pro
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 CLI
CLI版本号 3.98

4 回复

有自定义基座吗?


有啊,iPhone11(iOS15.7.1)正常启动

不是,你们就这么敷衍的吗?-_-||

在 iOS 17 系统中,由于苹果对系统权限的进一步限制,应用程序无法像在 Android 系统那样实现自启动。iOS 系统本身的设计理念是严格控制后台应用的活动,以保护用户的隐私和电池寿命。因此,即使是在 uni-app 开发的应用程序中,也无法绕过 iOS 系统的限制实现自启动。

以下是一些可能的原因和解决方案:


原因:

  1. iOS 系统限制

    • iOS 系统不允许应用程序在未经用户许可的情况下自启动或在后台运行。
    • 即使应用程序被用户手动启动,iOS 也会在应用进入后台后限制其活动。
  2. uni-app 的限制

    • uni-app 是基于跨平台框架开发的,其行为受限于 iOS 系统的底层规则。因此,无法绕过 iOS 的限制实现自启动。

解决方案:

  1. 通知机制

    • 使用推送通知(Push Notification)来唤醒应用程序。用户点击通知后,应用程序可以启动。
    • 需要在开发者后台配置推送服务(如 APNs),并在 uni-app 中集成推送插件(如 uni-push)。
  2. 后台任务

    • 使用 iOS 提供的有限后台任务机制(如 Background Modes),在特定场景下执行任务(如播放音乐、定位、下载等)。
    • 在 uni-app 中,可以通过原生插件或原生代码实现。
  3. 用户手动启动

    • 由于 iOS 的限制,最终用户需要手动启动应用程序。可以通过引导用户将应用添加到主屏幕或使用快捷指令(Shortcuts)来提高启动便捷性。
  4. 定期提醒

    • 使用本地通知(Local Notification)定期提醒用户打开应用程序。例如,设置每天固定时间弹窗提醒。

技术实现示例:

  1. 集成推送通知

    • 在 uni-app 中,使用 uni-push 插件集成推送功能。
    • 配置 APNs 证书,并在服务器端发送推送通知。
  2. 本地通知

    • 使用 uni-appplus.push API 实现本地通知。
    plus.push.createLocalNotification({
        title: '提醒',
        content: '请打开应用程序',
        delay: 60 * 60 * 24 // 24小时后触发
    });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!