uniapp 自启动
自启动功能概述
在UniApp中实现自启动功能通常涉及原生平台配置,需针对Android和iOS分别处理。由于iOS限制严格,自启动功能主要在Android端实现。
Android端配置
修改AndroidManifest.xml
在UniApp项目的原生Android配置文件中添加自启动权限和广播接收器:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application>
<receiver
android:name=".BootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
创建BootReceiver类
在Android原生代码中创建广播接收器,用于触发自启动逻辑:
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Intent launchIntent = new Intent(context, MainActivity.class);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(launchIntent);
}
}
}
注意事项
- 部分厂商(如华为、小米)需手动在系统设置中允许应用自启动。
- Android 10+可能需动态申请权限或引导用户开启后台限制。
iOS端限制
iOS系统禁止应用直接监听开机事件,可通过以下替代方案:
- 使用静默推送通知唤醒应用(需配置Background Modes)。
- 依赖用户主动启动应用后执行后台任务。
插件推荐
若需简化流程,可使用UniApp插件如:
uni-nativeBoot:封装了原生自启动逻辑的插件。- 第三方推送服务(如个推、极光)的SDK,支持后台唤醒。
测试与调试
- 在Android设备上重启后观察应用是否自动启动。
- 使用Logcat查看广播接收器是否触发。
通过以上配置,UniApp应用可在Android端实现自启动功能,但需注意厂商限制和系统版本差异。







