Meteor.call和Meteor.methods不能在移动设备(iOS)上工作,但完全适用于Web和iOS模拟器

时间:2017-03-27 10:52:23

标签: javascript meteor meteor-methods

虽然我还没有在Android上尝试过,但是在iOS上专门为移动设备构建应用程序时,Meteor.call和.methods并不完全确定如何放置这个。在我以前的项目中,这不会发生。我尝试与其他应用程序进行比较,实际上,我重新使用了另一个应用程序,但它只是不起作用。此外,一切都在网络和iOS模拟器上完美正常。有人请帮忙。

进口/启动/服务器/ methods.js

import { HTTP } from 'meteor/http';
import { Meteor } from 'meteor/meteor';

Meteor.methods({

    methodTrial: function(data) {
        console.log("Called methodTrial");
        return false;
    }

});

进口/启动/ UI /页/ home.js

import './home.html';

import { Meteor } from 'meteor/meteor';

Template.payment.events({
    "click #test-method": (event) => {
        var data = {
            name : "Hello World"
        };
        Meteor.call('methodTrial', data, (error, result) => {
            console.log("Called 'methodTrial'");
        }
    }
});

进口/启动/服务器/ index.js

import './methods.js';

服务器/ main.js

import { Meteor } from 'meteor/meteor';

import '/imports/startup/server';

1 个答案:

答案 0 :(得分:0)

您的'methodTrial' Meteor方法仅限服务器。

因此,您的客户端不会运行该方法的任何存根/模拟,并且完全依赖服务器响应来向用户提供任何反馈。

如果由于任何原因设备无法连接到您的服务器,客户端将无法在服务器上触发该方法,并且它将永远不会收到任何响应。

开发过程中常见的误解是因为您的设备(无论是基于iOS还是基于Android)连接到您的计算机(通过USB数据线),它连接到您的服务器。但实际上这仅适用于应用部署(当您执行meteor run ios-devicemeteor run android-device时)。安装并打开应用程序后,需要通过WiFi网络连接到计算机本地服务器。

请参阅Meteor Guide > Build > Mobile > Developing on a mobile

  

在开发过程中,您运行的设备和计算机meteor必须是同一WiFi网络的一部分,并且网络配置不应阻止设备到达服务器。您可能必须更改防火墙或路由器设置以允许此操作(无客户端隔离)。

     

meteor run将尝试自动检测运行该命令的计算机的本地IP地址。如果此操作失败,或者您希望移动应用程序连接到其他服务器,则可以使用--mobile-server选项指定地址。

常见的错误是:

  • 未在设备上启用WiFi。
  • 不允许设备连接到WiFi网络(路由器上的MAC地址过滤等)
  • 不允许在开发计算机上传入IP请求。