如何在 nativescript 中使用 InAppBrowser

Posted

技术标签:

【中文标题】如何在 nativescript 中使用 InAppBrowser【英文标题】:How to use InAppBrowser in nativescript 【发布时间】:2020-12-27 07:09:10 【问题描述】:

我将Nativescript inAppBrowser plugin 添加到我的nativescript core(javascript) 项目中。我将文档中的代码复制到我的项目中,但它不起作用(我猜是因为它是用打字稿写的)所以我编辑了代码。

现在,我收到错误 InAppBrowser.isAvaialble is not a function

这是我的 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'
      )
  
,

您可以将其与文档中的进行比较,看看我是否做错了什么,在此先感谢

【问题讨论】:

【参考方案1】:

您的函数必须是 async,并且您需要在所有对 InAppBrowser 的调用前加上 await

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'
        )
      

【讨论】:

以上是关于如何在 nativescript 中使用 InAppBrowser的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 在 NativeScript 中读取 CSS 变量

如何在Nativescript中使用本机视图

如何在 nativescript 中使用 InAppBrowser

NativeScript - 如何在应用程序的整个 scss 中使用 SASS 变量?

如何使用 Angular 在 NativeScript 中使用 XML 而不是 Html 进行设计?

如何在 nativescript vue 中使用 $navigateTo()?