Я работаю над мобильным приложением для метеорита (im, использующим android). им с помощью MetoerRider подход, по существу, запуск PhoneGap приложение и как только приложение будет сделано, начиная это делает Ajax вызов приложения метеора («http://myapp.meteor.com»)метеор с телефоном/кордорой
и я получить DOM из приложения метеора, как он ответ ,
$.ajax({
url: __MeteorRiderConfig__.meteorUrl,
cache: false,
// TODO: split to method on MeteorRider
error: function(jqXHR, textStatus, errorThrown) {
console.error("MeteorRider failure");
console.error(jqXHR, textStatus, errorThrown);
},
// TODO: split to method on MeteorRider
success: function(data, textStatus, jqXHR) {
console.log("MeteorRider success");
console.log(textStatus);
console.log(data);
// update URLs
data = data.replace(/(href|src|manifest)\=\"\//gm, '$1="' + meteorUrl + '/');
console.log(meteorUrl);
console.log(data);
// get the original file location, not including any params
phonegapLocation = window.location.href.split('.html')[0] + '.html';
// it's stored in a param "page"
currentMeteorPath = window.location.search.replace("?", "")
if(currentMeteorPath.length > 0) {
meteorUrl += currentMeteorPath.split('page=')[1]
}
console.log("replacing state with "+meteorUrl)
window.history.replaceState({}, "", meteorUrl);
// replace the document with the new document/data
document.open();
document.write(data);
document.close();
// trigger the "loaded" events (it'd be nice to do this AFTER JS has loaded
$(document).trigger('DOMContentLoaded');
$(document).trigger('load');
$(document).trigger('complete');
}
});
}
проблема заключается в том, что мой PhoneGap приложение работает только, когда Wi-Fi включен, как только я закрыть WiFi он перестает работать, если я запуска моего PhoneGap приложение, когда WiFi выключен я все еще получаю метеорный DOM в мое приложение phonegap, но я не могу выполнять какие-либо функции (логин/создать группу и т. д.).
так я начал отладки мое приложение (с помощью PhoneGap отладки в build.phonegap.com), и вот журнал, который я получаю, когда Wi-Fi включен:
if(navigator.onLine){
console.log("true")
}
else{
console.log("false")
}
журналы -> «истинный»
var networkState = navigator.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
console.log('Connection type: ' + states[networkState]);
}
журналы -> 'WiFi соединение'
Meteor.status()
журналы -> связано: правда RetryCount: 0 статус: "подключен"
при использовании мобильной сети:
if(navigator.onLine){
console.log("true")
}
else{
console.log("false")
}
журналы -> "истинный"
var networkState = navigator.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
console.log('Connection type: ' + states[networkState]);
}
журналы -> 'Cell 3G связь'
Meteor.status()
журналы -> подключены: false retryCount: 1 статус: "connect"
пытается сделать Meteor.reconnect()
не помогает и не работает. при работе Meteor.disconnect()
Когда Wi-Fi включен, приложение отключается, но затем при попытке сделать Meteor.reconnect()
его не работает.
при переключении (когда приложение работает) либо на Wi-Fi on/wifi off. я теряю все соединение и не могу даже отлаживать.
EDIT: добавлено событие форума
phonegapapp = {
// are we on a phonegap app?
phonegap: true,
// are we testing PhoneGap or not?
test: false,
// Application Constructor
initialize: function() {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'phonegapapp.receivedEvent(...);'
onDeviceReady: function() {
document.addEventListener("offline", this.onOffline, false);
phonegapapp.receivedEvent('deviceready');
phonegapapp.receivedEvent('offline');
if (this.test) {
$('phonegapapp-test').show();
} else {
phonegapapp.meteorRider();
}
},
// Update DOM on a Received Event
receivedEvent: function (id) {
console.log('Received Event: ' + id);
},
onOffline: function() {
device.exitApp();
},
// Setup MeteorRider
meteorRider: function() {
MeteorRider.init();
}
};
Update: протестирован на двух андроид телефонов (v 4.1.2 и v 4.3.3), на другом метеора приложения (без железа маршрутизатора, test.meteor.com). оба телефона вошли в систему - Meteor.status() «подключен» при использовании мобильной сети. но при включении/отключении Wi-Fi оба потеряли любое сетевое соединение.
поэтому я сужу его до двух возможных проблем: 1.my приложение метеорита делает что-то неправильно. 2.iron-router
после другой проверки другого метеоритного приложения (приложение, использующее железный маршрутизатор) meteor.status() журналы «подключены». Я верю, что причина неудачи в моем приложении, и я не вижу никаких ошибок в моем приложении метеоритов.
Новое обновление: ИТАК это становится действительно странно, я начал новое приложение метеоритное просто делать «метеор создать тест» добавил железо-маршрутизатор и еще несколько пакетов, таких как счета подчеркиваний Jquery и тому подобные. , а затем я развернул его для метеоритного метеорита. Boaz.meteor, com введите пароль, запустив приложение phonegap, чтобы узнать, работает ли его работа Meteor.status(); и получил «ложь» и «соединение»
Нового обновления: попытался создать приложение без каких-либо изменений или без добавления каких-либо пакетов или удаления любого пакета. работа с дозатором, Meteor.status(); журналы "false" и "connect"
Нет, этот доцент, похоже, тоже работает, есть две основные проблемы: 1. приложение phonegapp dosent подключается к серверу Meteor. Meteor.status() всегда возвращает false и «соединение» при использовании мобильного сеть. 2. При переключении Wi-Fi вкл/выкл все соединения теряются, независимо от того, что я использую (Wi-Fi или мобильная сеть). для первого номера я уверен, что это что-то похожее на Метеор, возможно, на веб-сокеты? im также довольно уверен, что если в set.xml с установленным contrct src в мое приложение Meteor, я не получу эти проблемы. (хотя я еще не пробовал его) –
также не подключено к событию на основе объекта Connection, поэтому, когда Connection.NONE истинно, событие offline будет запускаться (насколько я знаю, исправьте меня, если он ошибается), но объект Connection никогда не изменяется никому. –