2017-03-27 65 views
0

不完全確定如何放置這個,但Meteor.call和.methods在移動設備上構建應用程序時無法正常工作在iOS上,雖然我還沒有在Android上嘗試過。在我之前的項目中,這不會發生。我試圖與其他應用程序進行比較,實際上,我重新使用了其他應用程序,但它不起作用。此外,在網頁和iOS模擬器上的一切工作都很完美。有人請幫忙。Meteor.call和Meteor.methods不適用於移動設備(iOS),但完全適用於網絡和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'; 

server/main.js

import { Meteor } from 'meteor/meteor'; 

import '/imports/startup/server'; 
+0

你是否在設備上運行調試? (即'meteor run ios-device')如果是這樣,你是否檢查過你的設備可以通過WiFi連接到你的本地服務器? – ghybs

+0

@ghybs嗯我不確定在「調試」,但是我通過ios設備運行它。我確信兩臺設備都連接在同一個網絡上並連接到正確的IP地址。如果它根本不工作,它不會在模擬器上工作。 – zangetsu

+0

模擬器不必通過WiFi,而您的設備必須通過。可能值得確認設備可以通過['Meteor.status()'](http://docs.meteor.com/api/connections.html#Meteor-status)連接到你的服務器 – ghybs

回答

0

您的'methodTrial'流星方法僅限服務器。

因此,您的客戶端不會運行該方法的任何存根/模擬,並且完全依賴於服務器響應來給予用戶任何反饋。

如果由於任何原因設備無法連接到您的服務器,客戶端將無法觸發服務器上的方法,並且它將永遠不會收到任何響應。

開發過程中常見的誤解是,由於您的設備(無論是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請求。
相關問題