在NativeScript vue iOS中通过电子邮件链接打开应用程序

时间:2019-05-28 16:32:47

标签: nativescript deep-linking applinks nativescript-vue

编辑有关如何将此插件与vue结合使用的更多说明,请参见NativeScript vue, vuex and urlhandler


我正在努力做到这一点,以便电子邮件中的链接可以打开我正在构建的应用程序(我正在构建的用于测试NativeScript的测试应用程序)。我在iOS上将https://www.npmjs.com/package/nativescript-urlhandler与NativeScript vue一起使用。

我在platforms/ios/######/app/App_Resources/iOS/Info.plist中添加了

<key>CFBundleURLTypes</key>
<array>
   <dict>
       <key>CFBundleURLName</key>
       <string>com.#######.######</string>
   </dict>
   <dict>
       <key>CFBundleURLSchemes</key>
       <array>
           <string>mycustomappfoobar</string>
       </array>
   </dict>
</array>

在app.js中,我添加了:

const handleOpenURL = require("nativescript-urlhandler").handleOpenURL;


handleOpenURL(function(appURL) {
    console.log('Got the following appURL', appURL);
  });

点击mycustomappfoobar://test(电子邮件中的链接)时没有任何反应...

我看了看Angular示例,并且在初始化时调用了handleOpenURL。因此,我尝试将handleOpenURL放入挂接的Vue中-但这也不起作用。真的很沮丧...

new Vue({
    mounted() {
      handleOpenURL(function(appURL) {
        console.log('Got the following appURL', appURL);
      });
    },
    render: h => h("frame", [h(Home)]),
    store: Store
}).$start();

2 个答案:

答案 0 :(得分:2)

您正在更新错误的info.plist。基本上,platforms文件夹内的所有内容都是自动生成的。在您的App_Resources/iOS/info.plist中使用一个。

答案 1 :(得分:1)

您打给handleOpenURL的时间太晚了。应该在创建Vue上下文之前调用它,以便可以在幕后适当地扩充UIAppDelegate

来自https://github.com/hypery2k/nativescript-urlhandler/blob/cd6939119910b6345e444055ad17716a7c0ad1d6/demo/app/app.ts

import { handleOpenURL, AppURL } from 'nativescript-urlhandler';

import './app.scss';
import './bundle-config';
import * as app from 'application';

handleOpenURL((appURL: AppURL) => {
    console.log('handleOpenURL', appURL);
});

app.start({ moduleName: 'main-page' });