Как использовать InAppBrowser в нативном скрипте

Я добавил плагин Nativescript inAppBrowser в свой проект ядра нативного скрипта (javascript). Я скопировал код из документации в свой проект, но он не работал (я предполагаю, что он написан на машинописном языке), поэтому я отредактировал код.

Теперь я получаю сообщение об ошибке InAppBrowser.isAvaialble не является функцией

это мой код javascript

const openUrl = require("tns-core-modules/utils/utils").openUrl;
const alert = require("tns-core-modules/ui/dialogs").alert;
const InAppBrowser = require("nativescript-inappbrowser");

videoCall: function (args) {
    try {
      const url = "https://example.com";
      if (InAppBrowser.isAvailable()) {
        const result = InAppBrowser.open(url, {
          // iOS Properties
          dismissButtonStyle: 'cancel',
          preferredBarTintColor: '#453AA4',
          preferredControlTintColor: 'white',
          readerMode: false,
          animated: true,
          modalPresentationStyle: 'fullScreen',
          modalTransitionStyle: 'partialCurl',
          modalEnabled: true,
          enableBarCollapsing: false,
          // Android Properties
          showTitle: true,
          toolbarColor: '#6200EE',
          secondaryToolbarColor: 'black',
          enableUrlBarHiding: true,
          enableDefaultShare: true,
          forceCloseOnRedirection: false,
          // Specify full animation resource identifier(package:anim/name)
          // or only resource name(in case of animation bundled with app).
          animations: {
            startEnter: 'slide_in_right',
            startExit: 'slide_out_left',
            endEnter: 'slide_in_left',
            endExit: 'slide_out_right'
          },
          headers: {
            'my-custom-header': 'MVM'
          }
        })
        alert({
          title: 'Response',
          message: JSON.stringify(result),
          okButtonText: 'Ok'
        })
      }
      else {
        openUrl(url);
      }
    }
    catch(error) {
      alert({
        title: 'Error',
        message: error.message,
        okButtonText: 'Ok'
      })
  }
},

Вы можете сравнить его с тем, что в документации, чтобы увидеть, есть ли что-то, что я делаю неправильно, заранее спасибо


person kunlee    schedule 08.09.2020    source источник


Ответы (1)


Ваша функция должна быть async, и вам нужно иметь await перед всеми вызовами InAppBrowser.

import { openUrl } from 'tns-core-modules/utils/utils';
import { alert } from 'tns-core-modules/ui/dialogs';
import InAppBrowser from 'nativescript-inappbrowser';

async function openLink(url) { 
    try {
        if (await InAppBrowser.isAvailable()) {
            await InAppBrowser.open(url, {
                // iOS Properties
                dismissButtonStyle: 'cancel',
                preferredBarTintColor: '#453AA4',
                preferredControlTintColor: 'white',
                readerMode: false,
                animated: true,
                modalPresentationStyle: 'fullScreen',
                modalTransitionStyle: 'partialCurl',
                modalEnabled: true,
                enableBarCollapsing: false,
                // Android Properties
                showTitle: true,
                toolbarColor: '#6200EE',
                secondaryToolbarColor: 'black',
                enableUrlBarHiding: true,
                enableDefaultShare: true,
                forceCloseOnRedirection: false,
                // Specify full animation resource identifier(package:anim/name)
                // or only resource name(in case of animation bundled with app).
                animations: {
                    startEnter: 'slide_in_right',
                    startExit: 'slide_out_left',
                    endEnter: 'slide_in_left',
                    endExit: 'slide_out_right'
                },
                headers: {
                }
            });
        }
        else {
          openUrl(url);
        }
      }
      catch(error) {
        alert({
          title: 'Error',
          message: error.message,
          okButtonText: 'Ok'
        })
      }
person Wuv    schedule 26.10.2020