Открытие приложения по ссылке электронной почты в NativeScript vue iOS - PullRequest
0 голосов
/ 28 мая 2019

Редактировать Для получения более подробной информации о том, как использовать этот плагин с vue, см. NativeScript vue, vuex и urlhandler


Я пытаюсьсделайте так, чтобы ссылка в электронном письме могла открыть приложение, которое я создаю (это тестовое приложение, которое я создаю для изучения NativeScript).Я использую https://www.npmjs.com/package/nativescript-urlhandler с NativeScript vue на iOS.

В 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в пределах установленного крюка - но это тоже не работает.Действительно в тупик ...

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

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

Вы обновляете неправильно info.plist. В основном все, что находится внутри папки платформ, генерируется автоматически. Используйте тот в вашем App_Resources/iOS/info.plist.

1 голос
/ 28 мая 2019

Вы звоните 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' });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...