npm i --save @bigin/ns-url-handler
- 版本:1.0.6
- GitHub: https://github.com/NativeScript/plugins
- NPM: https://npmjs.net.cn/package/%40bigin%2Fns-url-handler
- 下载量
- 昨天: 0
- 上周: 0
- 上个月: 0
致谢
此插件由 @hypery2k 的 nativescript-urlhanlder 提供。您可以在 https://github.com/hypery2k/nativescript-urlhandler 获取原始插件。
我们已升级到 NS7,并添加了一些调整以确保其正常工作。
NativeScript URL Handler 插件
为您的应用程序注册通用的链接和自定义 URL 方案处理程序
用法
只需将应用程序链接添加到您的应用程序中,参见下面的 iOS 和 Android 指令,并注册一个用于 URL 数据的处理程序。
以下为 Angular 的示例
import { Component, OnInit } from '@angular/core';
import { handleOpenURL, AppURL } from 'nativescript-urlhandler';
@Component({
selector: 'gr-main',
template: '<page-router-outlet></page-router-outlet>',
})
export class AppComponent {
constructor() {}
ngOnInit() {
handleOpenURL((appURL: AppURL) => {
console.log('Got the following appURL', appURL);
});
}
}
以及纯 NativeScript
var handleOpenURL = require('nativescript-urlhandler').handleOpenURL;
handleOpenURL(function (appURL) {
console.log('Got the following appURL', appURL);
});
或作为 TypeScript
import { handleOpenURL, AppURL } from 'nativescript-urlhandler';
handleOpenURL((appURL: AppURL) => {
console.log('Got the following appURL', appURL);
});
安装
$ ns plugin add @bigin/ns-url-handler
Android
将 myapp 替换为您想要的方案,并将启动模式设置为 singleTask
<activity android:name="com.tns.NativeScriptActivity" ... android:launchMode="singleTask"...>
...
<intent-filter>
<data android:scheme="myapp" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
例如
<activity android:name="com.tns.NativeScriptApplication" android:label="@string/app_name" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp" android:host="__PACKAGE__" />
</intent-filter>
</activity>
android:launchMode="singleTask" 告诉 Android 操作系统使用活动的新实例或现有实例启动应用程序,否则您的应用程序将启动多个实例,这并不好。
iOS
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.yourcompany.myapp</string>
</dict>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string>
</array>
</dict>
</array>
常见问题解答
回调处理
"handleOpenURL" 回调必须在应用程序初始化之前调用,否则您将在控制台中看到此错误
No callback provided. Please ensure that you called "handleOpenURL" during application init!
Webpack
TypeScript 配置
如果您的 Webpack 构建失败,请尝试将您的 tsconfig 调整为以下内容
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"noEmitHelpers": true,
"noEmitOnError": true,
"lib": [
"es6",
"dom",
"es2015.iterable"
],
"baseUrl": ".",
"paths": {
"*": [
"./node_modules/tns-core-modules/*",
"./node_modules/*"
]
}
},
"exclude": [
"node_modules",
"platforms",
"**/*.aot.ts"
]