簡體   English   中英

如何觸發我的在線和離線事件

[英]how to fire my online and offline events

我正在使用Cordova 3.4。 (機器人)

我設置了4個要觸發的事件:

  • deviceready
  • 的onResume
  • 線上
  • 離線

問題在於,在線和離線事件根本沒有觸發。

根據文檔,我將onResume的監聽器設置為設備就緒之前,並將其設置為在線/離線。

這是我所做的。

事件腳本:

function onLoad() {
document.addEventListener("online", onGoesOnLine, false);
document.addEventListener("offline", onGoesOffLine, false);
document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady() {
document.addEventListener("resume", onResumeApp, false);
var db = window.openDatabase("Database", "1.0", "MondialRelay", 200000);
db.transaction(creerBaseDonneesSiNonExist, function(err){
console.log("erf ...");
 }, function(){
  console.log("hell yeah");
 });
}

function onGoesOnLine(){
 alert("onLine");
}

function onGoesOffLine(){
 alert("offLine");
}

function onResumeApp(){
 alert("onResume");
 window.location = "offLineIndex.html";
}

config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="fr.mondialrelay.appli" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<preference name="loglevel" value="DEBUG" />
<feature name="App">
    <param name="android-package" value="org.apache.cordova.App" />
</feature>
<name>MondialRelay</name>
<description>
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
</author>
<content src="index.html" />
<access origin="*" />
<feature name="NetworkStatus">
    <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
</feature>
<feature name="Device">
    <param name="android-package" value="org.apache.cordova.device.Device" />
</feature>
<feature name="Geolocation">
    <param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
<feature name="Battery">
    <param name="android-package" value="org.apache.cordova.batterystatus.BatteryListener" />
</feature>
<plugin name="Storage" value="org.apache.cordova.Storage" />
<plugin name="Geolocation" value="org.apache.cordova.GeoBroker" />
<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager" />
</widget>

AndroidManifest.xml:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" android:windowSoftInputMode="adjustPan" package="fr.mondialrelay.appli" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:name="MondialRelay" android:theme="@android:style/Theme.Black.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
</manifest>

這是我運行“ cordova plugin ls”命令時看到的內容:

[ 'org.apache.cordova.battery-status',
'org.apache.cordova.device',
'org.apache.cordova.geolocation',
'org.apache.cordova.network-information' ]

我不認為我會丟失任何東西,但仍然無法正常工作...

我知道這個問題已經被問過很多次了,但是即使在閱讀了答案之后,我也不知道如何使它起作用。

首先,當我進行測試時,我將應用程序設置為暫停狀態以切斷我的互聯網連接,我認為那可能是問題..然后我用手機設置了wifi,然后在應用程序運行時,我只是關閉了它下來..沒有辦法得到任何警報..

謝謝您的幫助;)問候。

什么都沒用...我確實找到了解決該問題的方法...

  • 將您的WWW文件夾保存在某處。
  • 轉到項目的根目錄。
  • 添加所有您需要的插件(如果尚未完成)
  • Cordova Build在項目的根目錄中Cordova Build CLI

然后復制/粘貼之前保存的www文件夾的內容,而不是復制由cordova CLI創建的新文件夾(不要替換cordova.js cordova_plugin.js和plugins文件夾)

然后去你的Eclipse IDE,編譯,它應該可以工作了:)

希望能有所幫助。 問候。

僅在狀態更改時觸發在線/離線事件。 如果需要在特定點檢查連接性,則可以使用navigator.network.connection.type。

initialize: function() {
    this.bindEvents();
},

bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},

function onGoesOnLine(){
    alert("onLine");
},

function onGoesOffLine(){
  alert("offLine");
},

onDeviceReady: function() {        
    document.addEventListener("offline", onGoesOffLine, false);
    document.addEventListener("online", onGoesOnLine, false);
    if((navigator.network.connection.type).toUpperCase() == "NONE" && 
       (navigator.network.connection.type).toUpperCase() == "UNKNOWN") {
        onGoesOffLine();
    }
    else {
        onGoesOnLine();
    }   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM