uniapp 如何开发原生快捷入口
在uniapp中如何开发原生快捷入口?比如类似微信小程序那种直接添加到桌面的功能。需要调用原生的API吗?具体应该怎么实现?有没有完整的代码示例或者详细的步骤说明?
2 回复
在H5页面中,使用plus.runtime.launchApplication
调用原生方法,传入scheme或包名。iOS需配置URL Scheme,Android需配置Intent Filter。
在 UniApp 中,原生快捷入口(如 iOS 的 App Clips 或 Android 的 App Shortcuts)需要通过原生平台能力实现,UniApp 本身不直接提供跨端 API。以下是实现方法:
1. Android 应用快捷方式(App Shortcuts)
使用原生 Android 配置,通过 UniApp 的 Native.js 或原生插件调用。
步骤:
- 在 Android 原生工程中配置 Shortcuts(在
res/xml/shortcuts.xml
中定义):
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:shortcutId="quick_entry"
android:enabled="true"
android:icon="@drawable/icon"
android:shortcutShortLabel="@string/short_label"
android:shortcutLongLabel="@string/long_label">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.app"
android:targetClass="com.example.app.MainActivity" />
</shortcut>
</shortcuts>
- 在
AndroidManifest.xml
中注册:
<activity android:name=".MainActivity">
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
- UniApp 中通过 Native.js 动态创建(可选):
// 需在 Android 平台运行
if (plus.os.name === 'Android') {
const main = plus.android.runtimeMainActivity();
const ShortcutManager = plus.android.importClass('android.content.pm.ShortcutManager');
const manager = main.getSystemService('shortcut');
// 动态添加快捷方式代码(需适配 Android 版本)
}
2. iOS App Clips
通过配置 iOS 原生工程实现,UniApp 需集成原生模块。
步骤:
-
在 Xcode 中添加 App Clip Target:
- 在项目中新建一个 App Clip Target,配置 Bundle ID 和关联主 App。
- 在
Info.plist
中注册NSUserActivity
类型。
-
配置 Associated Domains:
- 在开发者中心为 App Clip 和主 App 配置相同的 Associated Domain(格式:
appclips:example.com
)。
- 在开发者中心为 App Clip 和主 App 配置相同的 Associated Domain(格式:
-
UniApp 中触发 App Clip:
- 通过网页链接或 NFC 触发,UniApp 无法直接控制,需依赖原生逻辑。
注意事项
- 平台限制:Android 快捷方式需 API 25(Android 7.1)及以上;iOS App Clips 需 iOS 14 及以上。
- 动态快捷方式:Android 支持代码动态创建,但需用户授权;iOS App Clips 依赖外部触发。
- 插件开发:若频繁使用,建议封装为 UniApp 原生插件,简化调用。
如需完整示例或插件集成,可参考 UniApp 官方插件市场或 Android/iOS 原生开发文档。