将Nativescript移动应用程序与本地api服务器连接

时间:2019-08-24 20:27:04

标签: mobile nativescript emulation nativescript-vue

所以我遇到了一个可能是典型的问题,尽管似乎有一些相关的问题和答案herehere,但它们并不完全适用于我的问题。

我有一个正在运行的本地django服务器(localhost:8000)。 我想通过将Nativescript / Vue与Axios进行http调用,轻松开发一个与我的django服务器连接的Nativescript移动应用程序。我更喜欢在ios中开始开发/测试。使用Nativescript进行开发时,我有两种选择-使用“ tns run ios”在Mac上启动ios模拟器,或者使用“ tns Preview”通过我的实际iphone进行测试。

当我通过axios对http://localhost:8000/myapi进行基本调用时,该调用会产生http状态结果为null。

  • 我尝试使用回送地址(例如10.0.2.2-我认为该地址可能适用于Android模拟器),但结果相同。
  • 我尝试使用我的Mac的本地IP地址-即,不是本地主机,而是使用本地192.168.xx.xx地址进行通话,但这没用

  • 我终于能够使用./ngrok将其本地服务器传输到外部IP地址,从而使其正常工作。现在可以使用,但是由于IP地址可能会不时更改,因此这并不理想。

使用Nativescript预览或运行ios模拟器轻松连接到本地api服务器的建议解决方案是什么?

2 个答案:

答案 0 :(得分:1)

仿真器API路径:-http://10.0.2.2:5000。就像您的API本地路径是http://198.168.1:5000/apihttp://localhost:5000/api,然后替换为http://10.0.2.2:5000/api,并且端口地址与您的本地API端口相同。

路径- App_resources / Android / src / main / AndroidManifest.xml:-

android:usesCleartextTraffic =“ true” 添加应用程序标记

iOS文件路径- App_Resources / iOS / Info.plist

<key>NSAppTransportSecurity</key>
 <dict>
  <key>NSExceptionDomains</key>
   <dict>
    <key>10.0.2.2:5000</key>
    <dict>
        <key>NSExceptionAllowsInsecureHTTPLoads</key>
        <true/>
    </dict>
  </dict>
</dict>

答案 1 :(得分:0)

如@Manoj所述,您需要在为iOS定义的here的仿真器设置中允许使用http。

此外,如果您使用的是django,则还必须执行以下操作:

  • 确定您的本地IP地址(通过用于Mac的ifconfig)

  • 您在settings.py中允许的主机包含此IP地址-例如,ALLOWED_HOSTS = ['192.168.14.14','localhost','127.0.0.1']-其中192.168.14.14是您的本地IP地址< / p>

  • 您以该IP地址而不是本地主机的身份启动服务器-例如python manage.py runserver 192.168.14.14:8000

这将同时适用于模拟器(tns运行ios)和手机上的游乐场(tns预览)

相关问题