8.7 版本发布—WinterCG 兼容性第一部分
了解更多

在 GitHub 上查看

@nativescript/app-availability

一个检查设备上是否安装了某个应用的插件。

安装

cli
npm install @nativescript/appavailability

使用 @nativescript/app-availability

TypeScript
// examples of what to pass:
// - for iOS: "maps://", "twitter://", "fb://"
// - for Android: "com.facebook.katana"
available('twitter://').then((avail: boolean) => {
  console.log('App available? ' + avail)
})

打开应用(带网页回退)

要打开设备上安装的应用,请在 Utils 类上调用 openUrl() 方法。将应用的标识符 URL 传递给该方法。

以下代码异步检查设备上是否安装了 Twitter 移动应用。如果应用可用,则 openUrl() 会打开它。否则,openUrl() 会改为打开网站。

TypeScript
import { available } from '@nativescript/appavailability'
import { Utils } from '@nativescript/core'

const twitterScheme = 'twitter://'
available(twitterScheme).then((available) => {
  if (available) {
    // open in the app
    Utils.openUrl(
      twitterScheme +
        (isIOS ? '/user?screen_name=' : 'user?user_id=') +
        'eddyverbruggen'
    )
  } else {
    // open in the default browser
    Utils.openUrl('https://twitter.com/eddyverbruggen')
  }
})

要同步检查应用的可用性,请使用 availableSync() 函数。

TypeScript
import { availableSync } from '@nativescript/appavailability'
import { Utils } from '@nativescript/core'

if (availableSync('twitter://')) {
  Utils.openUrl(
    'twitter://' +
      (isIOS ? '/user?screen_name=' : 'user?user_id=') +
      'eddyverbruggen'
  )
} else {
  Utils.openUrl('https://twitter.com/eddyverbruggen')
}

确定应用的正确标识符。

  • Android:搜索 Play 商店并使用 URL 中的 ID。对于 Twitter,它是 com.twitter.android,因为 URL 是 https://play.google.com/store/apps/details?id=com.twitter.android

  • iOS:在 iPhone 上打开 Safari,并在地址栏中输入例如 'twitter://'。如果应用启动,则使用该 URL 作为标识符。

iOS 白名单

要在 iOS 9+ 上获得有用的结果,请在应用的 Info.plist 中将您要查询的 URL 方案列入白名单。

例如,要查询 twitter://whatsapp://fb://,请按如下方式编辑 app/App_ResourcesiOS/Info.plist

xml
<key>LSApplicationQueriesSchemes</key>
<array>
	<string>fb</string>
	<string>twitter</string>
	<string>whatsapp</string>
</array>

Android 查询权限

从 Android API 级别 30(Android 11)开始,您必须在 Android 清单文件 AndroidManifest.xml 中明确声明您的应用与其他应用交互的意图。

xml
<manifest>
    <queries>
        <package android:name="com.whatsapp" />
    </queries>

    <application ...>
    </application>
</manifest>

com.whatsapp 替换为您要与其交互的应用的包名称。

API

方法返回类型描述
available(packageName:string)Promise<boolean>异步检查设备上是否安装了指定 packageName 的应用。
availableSync(packageName:string)boolean同步检查设备上是否安装了指定 packageName 的应用。

许可证

Apache 许可证 2.0 版