Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eddyverbruggen/nativescript-appavailability
:mag_right: NativeScript plugin to check whether or not another app is installed on the device
https://github.com/eddyverbruggen/nativescript-appavailability
bundle nativescript package urlscheme whitelist
Last synced: 3 months ago
JSON representation
:mag_right: NativeScript plugin to check whether or not another app is installed on the device
- Host: GitHub
- URL: https://github.com/eddyverbruggen/nativescript-appavailability
- Owner: EddyVerbruggen
- License: mit
- Created: 2015-05-08T21:05:03.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-09-06T08:44:57.000Z (over 4 years ago)
- Last Synced: 2024-10-02T07:59:08.460Z (3 months ago)
- Topics: bundle, nativescript, package, urlscheme, whitelist
- Language: JavaScript
- Homepage:
- Size: 17.6 KB
- Stars: 19
- Watchers: 6
- Forks: 6
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NativeScript AppAvailability
[![NPM version][npm-image]][npm-url]
[![Downloads][downloads-image]][npm-url]
[![Twitter Follow][twitter-image]][twitter-url][npm-image]:http://img.shields.io/npm/v/nativescript-appavailability.svg
[npm-url]:https://npmjs.org/package/nativescript-appavailability
[downloads-image]:http://img.shields.io/npm/dm/nativescript-appavailability.svg
[twitter-image]:https://img.shields.io/twitter/follow/eddyverbruggen.svg?style=social&label=Follow%20me
[twitter-url]:https://twitter.com/eddyverbruggenA plugin to check for availability of other apps on the device.
> ⚠️ Looking for NativeScript 7 compatibilty? Go to [the NativeScript/plugins repo](https://github.com/NativeScript/plugins/tree/master/packages/appavailability).
## Installation
Run the following command from the root of your project:```
tns plugin add nativescript-appavailability
```## Usage
> Note that version 1.3.0 added a synchronous version of this method that doesn't return a Promise. Need that? Use `availableSync` instead of `available`.
### TypeScript
```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
```typescript
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
```js
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);
})
```## Opening an app (with web fallback)
Now that you know whether an app is installed or not, you probably want to launch it.
Here's a snippet that opens the mobile Twitter app and falls back to the website if it's not installed.```typescript
import { available } from "nativescript-appavailability";
import { openUrl } from "tns-core-modules/utils/utils";const twitterScheme = "twitter://";
available(twitterScheme).then(available => {
if (available) {
// open in the app
openUrl(twitterScheme + (isIOS ? "/user?screen_name=" : "user?user_id=") + "eddyverbruggen");
} else {
// open in the default browser
openUrl("https://twitter.com/eddyverbruggen");
}
})
```And a more concise, synchronous way would be:
```typescript
import { availableSync } from "nativescript-appavailability";
import { openUrl } from "tns-core-modules/utils/utils";if (availableSync("twitter://")) {
openUrl("twitter://" + (isIOS ? "/user?screen_name=" : "user?user_id=") + "eddyverbruggen");
} else {
openUrl("https://twitter.com/eddyverbruggen");
}
```## iOS whitelisting
To get useful results on iOS 9 and up you need to whitelist the URL Scheme
you're querying in the application's `.plist`.Luckily NativeScript made this pretty easy. Just open `app/App_ResourcesiOS/Info.plist`
and add this if you want to query for both `twitter://` and `fb://`:```xml
LSApplicationQueriesSchemes
fb
```You may wonder how one would determine the correct identifier for an app.
* Android: simply search the Play Store and use the id in the URL. For Twitter this is com.twitter.android because the URL is https://play.google.com/store/apps/details?id=com.twitter.android.
* iOS: this one is a bit harder but this site should cover most apps you're interested in. When in doubt you can always fire up Safari on your iPhone and type for example 'twitter://' in the address bar, if the app launches you're good.