@nativescript/appavailability
A NativeScript 插件,用于检查设备上其他应用的可用性。
npm i --save @nativescript/appavailability

Nativescript appavailability

一个用于检查设备上其他应用可用性的插件。

ns plugin add @nativescript/appavailability

用法

注意,版本 1.3.0 添加了同步版本的此方法,不返回 Promise。需要吗?使用 availableSync 而不是 available

TypeScript

const isAppAvailable = require("@nativescript/appavailability").available;

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

TypeScript + Angular

import * as appavailability from "@nativescript/appavailability";

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

JavaScript

var appAvailability = require("@nativescript/appavailability");

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

打开一个应用(带网页回退)

现在你知道一个应用是否已安装,你可能想打开它。以下是一个示例代码片段,用于打开移动 Twitter 应用,如果未安装,则回退到网站。

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");
}
})

并且还有一种更简洁的同步方法

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");
}

iOS 白名单

要获取 iOS 9 及以上版本的实用结果,您需要在应用程序的 .plist 中将您要查询的 URL Scheme 加入白名单。

幸运的是,NativeScript 使这变得相当简单。只需打开 app/App_ResourcesiOS/Info.plist 并添加以下内容,如果您想查询 twitter://fb://

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

你可能想知道如何确定应用程序的正确标识符。

  • Android:只需在 Play 商店中搜索并使用 URL 中的 id。对于 Twitter,这是 com.twitter.android,因为 URL 是 https://play.google.com/store/apps/details?id=com.twitter.android。
  • iOS:这有点困难,但这个网站应该涵盖了您感兴趣的多数应用。如有疑问,您始终可以在 iPhone 上打开 Safari 并在地址栏中输入例如 'twitter://',如果应用启动,那么您就做得很好。

许可

Apache 许可证版本 2.0