Meteor.call и Meteor.methods не работают на мобильных устройствах (iOS), но прекрасно работают в веб-симуляторах и iOS.

Не совсем уверен, как это сделать, но Meteor.call и .methods не работают при создании приложения на мобильном телефоне, особенно на iOS, хотя я еще не пробовал на Android. В моем предыдущем проекте такого не было. Я попытался сравнить с другим приложением и, на самом деле, я повторно использовал другое для этого нового приложения, но оно просто не работает. Кроме того, все отлично работает как в веб-симуляторе, так и в симуляторе iOS. Кто-нибудь, пожалуйста, помогите.

импорт/запуск/сервер/methods.js

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

Meteor.methods({

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

});

импорт/запуск/пользовательский интерфейс/страницы/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';

person zangetsu    schedule 27.03.2017    source источник
comment
Вы работаете на устройстве в качестве отладки? (например, meteor run ios-device) Если да, то проверили ли вы, может ли ваше устройство подключаться к локальному серверу через WiFi?   -  person ghybs    schedule 27.03.2017
comment
@ghybs Хм, я не уверен в отладке, но да, я запускаю ее через ios-устройство. Я уверен, что оба устройства подключены к одной сети и подключаются к правильному IP-адресу. Это не сработало бы на симуляторе, если бы оно вообще не работало.   -  person zangetsu    schedule 27.03.2017
comment
Симулятору не нужно подключаться к Wi-Fi, в отличие от вашего устройства. Возможно, стоит убедиться, что устройство может подключиться к вашему серверу с помощью Meteor.status().   -  person ghybs    schedule 27.03.2017
comment
@ghybs Правильно, конечно. Если он не может подключиться, то что я могу сделать?   -  person zangetsu    schedule 27.03.2017
comment
Вы пробовали, если это основная причина вашей проблемы?   -  person ghybs    schedule 27.03.2017
comment
@ghybs Это проблема. Приложение действительно не может подключиться. Я забыл посмотреть на это.   -  person zangetsu    schedule 27.03.2017
comment
Давайте продолжим обсуждение в чате.   -  person zangetsu    schedule 27.03.2017


Ответы (1)


Ваш метод 'methodTrial' Meteor предназначен только для сервера.

Поэтому ваш клиент не запускает заглушку/симуляцию этого метода и полностью полагается на ответ сервера, чтобы дать пользователю какую-либо обратную связь.

Если по какой-либо причине устройство не может подключиться к вашему серверу, клиент не сможет запустить метод на сервере и никогда не получит никакого ответа.

Распространенным заблуждением во время разработки является то, что, поскольку ваше устройство (на базе iOS или Android) подключено к вашему компьютеру (через USB-кабель для передачи данных), оно подключено к вашему серверу. Но на самом деле это верно только для развертывания приложения (когда вы выполняете meteor run ios-device или meteor run android-device). После того, как приложение установлено и открыто, ему необходимо подключиться к локальному серверу вашего компьютера через сеть WiFi.

См. Руководство по Meteor › Build › Mobile › Разработка для мобильных устройств:

Во время разработки [...] устройство и компьютер, на котором вы запускаете meteor, должны быть частью одной и той же сети Wi-Fi, и конфигурация сети не должна препятствовать доступу устройства к серверу. Возможно, вам придется изменить настройки брандмауэра или маршрутизатора, чтобы разрешить это (без изоляции клиента).

meteor run попытается автоматически определить локальный IP-адрес компьютера, выполняющего команду. Если это не удается, или если вы хотите, чтобы ваше мобильное приложение подключалось к другому серверу, вы можете указать адрес, используя параметр --mobile-server.

Распространенные ошибки:

  • Не включение Wi-Fi на устройстве.
  • Не позволяет устройству подключаться к сети Wi-Fi (фильтрация MAC-адресов на маршрутизаторе и т. д.)
  • Запрещение входящих IP-запросов на компьютере разработки.
person ghybs    schedule 27.03.2017