Maison  >  Article  >  interface Web  >  Que dois-je faire si la fenêtre contextuelle ne s'affiche pas lorsqu'uniapp obtient des informations ?

Que dois-je faire si la fenêtre contextuelle ne s'affiche pas lorsqu'uniapp obtient des informations ?

PHPz
PHPzoriginal
2023-04-20 13:54:262175parcourir

Avec le développement rapide de l'Internet mobile, de plus en plus d'applications et de sites Web sont développés à l'aide de la technologie uniapp. Dans le développement d'uniapp, un problème souvent rencontré est que la fenêtre ne s'affiche pas lors de l'obtention d'informations. Cet article explique comment résoudre ce problème dans Uniapp.

Description du problème

Pendant le processus de développement à l'aide d'uniapp, nous rencontrons souvent des scénarios dans lesquels les utilisateurs doivent être invités, tels que des fenêtres contextuelles de confirmation, des notifications de message, etc. Cependant, si vous n'êtes pas familier avec le développement d'uniapp, vous constaterez peut-être qu'il n'y a pas de fenêtre contextuelle lors de l'obtention d'informations dans uniapp, ce qui est très pénible.

Plus précisément, lorsque nous appelons la méthode fournie par uniapp pour obtenir des données, comme la méthode wx.getUserInfo() de l'applet WeChat, un objet Promise sera renvoyé. En JavaScript, nous pouvons traiter les données obtenues via la méthode then() de l'objet Promise, par exemple en les affichant sur la page ou en faisant apparaître une fenêtre contextuelle de confirmation. Mais dans uniapp, si vous utilisez directement la méthode uni.<Platform>.getUserInfo() pour obtenir des informations sur l'utilisateur, aucune fenêtre contextuelle de confirmation n'apparaîtra et il n'y aura aucune invite. wx.getUserInfo()方法,会返回一个Promise对象。在JavaScript中,我们可以通过Promise对象的then()方法来处理获取到的数据,比如显示在页面上或者弹出一个确认弹窗。但是在uniapp中,如果你直接使用uni.<平台>.getUserInfo()方法来获取用户信息,不会弹出确认弹窗,也不会有任何提示。

原因分析

要解决这个问题,首先需要了解uniapp的一些基础知识。在uniapp中,我们通常会使用封装好的API来调用原生API。而封装好的API的实现通常是通过调用原生API,然后根据不同平台的特性进行处理,最终返回所需的结果。

举个例子来说,当我们在微信小程序中使用wx.getUserInfo()方法获取用户信息时,微信小程序会弹出一个确认弹窗,提示用户是否授权该应用获取用户信息。如果用户授权了,微信小程序会返回用户信息给开发者程序;如果用户拒绝授权,微信小程序会返回一个错误信息。

但是,在uniapp中,由于要兼容多个平台,封装API的时候就不能直接调用原生API来实现获取用户信息了。相反,uniapp封装的uni.<平台>.getUserInfo()方法只是把用户信息返回给开发者程序,而不会弹出确认弹窗或者有其他提示。

解决方案

既然原因已经明确了,那么解决方案也就很明显了。在uniapp中,如果需要获取用户信息,并且希望有确认弹窗或者其他提示,需要通过uniapp提供的API来实现。

具体来说,可以使用uniapp的消息提示框API uni.showModal(),以及弱提示框API uni.showToast()等方法来实现提示功能。示例如下:

uni.showModal({
  title: '提示',
  content: '是否允许获取用户信息?',
  success: function (res) {
    if (res.confirm) {
      uni.<平台>.getUserInfo({
        success: function (res) {
          console.log(res.userInfo);
        }
      });
    }
  }
});

在上面的代码中,当我们调用uni.<平台>.getUserInfo()方法之前,会弹出一个确认弹窗,提示用户是否允许获取用户信息。如果用户点击了确认按钮,才会执行uni.<平台>.getUserInfo()方法,并打印获取到的用户信息。

除了上述两个API外,uniapp还提供了许多其他的API可以帮助我们实现提示等功能。需要你根据具体的情况进行选择和使用。

结论

总的来说,在uniapp开发中,如果要获取用户信息并且需要有提示功能,不能直接使用原生API,需要通过uniapp提供的API来实现。封装好的API的实现通常是通过调用原生API,然后根据不同平台的特性进行处理,最终返回所需的结果。其中,uniapp提供的消息提示框API uni.showModal()和弱提示框API uni.showToast()

Analyse des causes🎜🎜Pour résoudre ce problème, vous devez d'abord comprendre quelques connaissances de base d'uniapp. Dans uniapp, nous utilisons généralement des API encapsulées pour appeler des API natives. La mise en œuvre de l'API encapsulée consiste généralement à appeler l'API native, puis à la traiter en fonction des caractéristiques des différentes plates-formes, et enfin à renvoyer les résultats requis. 🎜🎜Par exemple, lorsque nous utilisons la méthode wx.getUserInfo() dans l'applet WeChat pour obtenir des informations sur l'utilisateur, l'applet WeChat affichera une fenêtre contextuelle de confirmation pour demander à l'utilisateur s'il doit autoriser l'application. Obtenez des informations sur l'utilisateur. Si l'utilisateur l'autorise, l'applet WeChat renverra les informations utilisateur au programme développeur ; si l'utilisateur refuse l'autorisation, l'applet WeChat renverra un message d'erreur. 🎜🎜Cependant, dans uniapp, en raison de la nécessité d'être compatible avec plusieurs plates-formes, lors de l'encapsulation de l'API, vous ne pouvez pas appeler directement l'API native pour obtenir des informations sur l'utilisateur. Au contraire, la méthode uni.<Platform>.getUserInfo() encapsulée par uniapp renvoie uniquement les informations utilisateur au programme développeur sans afficher de fenêtre contextuelle de confirmation ou d'autres invites. 🎜🎜Solution🎜🎜Maintenant que la cause est claire, la solution est également évidente. Dans uniapp, si vous avez besoin d'obtenir des informations sur l'utilisateur et que vous souhaitez avoir une fenêtre contextuelle de confirmation ou d'autres invites, vous devez utiliser l'API fournie par uniapp. 🎜🎜Plus précisément, vous pouvez utiliser l'API de boîte d'invite de message d'uniapp uni.showModal() et l'API de boîte d'invite faible uni.showToast() pour implémenter la fonction d'invite. Un exemple est le suivant : 🎜rrreee🎜Dans le code ci-dessus, avant d'appeler la méthode uni.<Platform>.getUserInfo(), une fenêtre contextuelle de confirmation apparaîtra pour demander à l'utilisateur s'il doit autoriser l'accès aux informations utilisateur. . Si l'utilisateur clique sur le bouton de confirmation, la méthode uni.<Platform>.getUserInfo() sera exécutée et les informations utilisateur obtenues seront imprimées. 🎜🎜En plus des deux API ci-dessus, uniapp fournit également de nombreuses autres API pour nous aider à implémenter des fonctions telles que des invites. Vous devez le choisir et l'utiliser en fonction de la situation spécifique. 🎜🎜Conclusion🎜🎜En général, dans le développement uniapp, si vous souhaitez obtenir des informations utilisateur et avez besoin d'une fonction d'invite, vous ne pouvez pas utiliser directement l'API native, mais devez utiliser l'API fournie par uniapp. La mise en œuvre de l'API encapsulée consiste généralement à appeler l'API native, puis à la traiter en fonction des caractéristiques des différentes plates-formes, et enfin à renvoyer les résultats requis. Parmi elles, des méthodes telles que l'API de boîte d'invite de message uni.showModal() et l'API de boîte d'invite faible uni.showToast() fournie par uniapp sont souvent utilisées pour implémenter le fonction rapide. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn