2016-11-24 5 views
0

私はホームページで私のコードブラウザのアプリケーションを使用するとき、彼は本当にアプリを終了するかどうかを彼に尋ねるためにユーザーにメッセージを表示する必要があります。
ユーザーが「はい」を選択した場合、アプリを終了する必要があります。終了コードバーWindows 10アプリケーション

document.addEventListener('backbutton', function() { 
    $rootScope.back(); 
    $rootScope.$apply(); 
}, false); 

$rootScope.back = function(execute) { 
    var path = $location.$$path; 
    if (path !== '/') { 
     $location.path(path.split('/').slice(0, -1).join('/')); 
    } else { 
     $rootScope.exitApp(); 
    } 
}.bind(this); 

$rootScope.exitApp = function() { 
    $rootScope.$emit('showPopover', { 
     message: $rootScope.LABELS.QUIT_APP, 
     confirmCallback: function() { 
      if (typeof navigator.app !== 'undefined') { 
       navigator.app.exitApp(); 
      } 
     }, 
     cancelCallback: doNothing 
    }); 
}; 

それは、AndroidとiOSで働いている、ではなく、Windowsの10アプリ:

はそれを行うには、私はこのコードを使用します。

W10では、navigator.appは未定義です。
https://cordova.apache.org/docs/en/latest/cordova/events/events.html#backbutton)私は私がそれを終了アプリを中断しないようになってることを読んで、私はコルドバドキュメントにquirkswrittenこのウィンドウを試してみました:

$rootScope.exitApp = function() { 
    $rootScope.$emit('showPopover', { 
     message: $rootScope.LABELS.QUIT_APP, 
     confirmCallback: function() { 
      if (typeof navigator.app !== 'undefined') { 
       navigator.app.exitApp(); 
      } 
      else if (platformUtils.isWindows()) { 
       throw new Error('Exit'); // This will suspend the app 
      } 
     }, 
     cancelCallback: doNothing 
    }); 
}; 

throw new Error('Exit')が呼び出さとログの表示エラーが、アプリがないです中断された

私は角度のあるアプリですか?

アイデアはありますか?

答えて

0

問題は$emitがポップオーバーの表示に使用されているためです。
ポップオーバーコールバックでエラーが発生した場合、このエラーはbackbuttonイベントコールバックに返されません。

しかし、Windowsプラットフォームでは、ユーザーがアプリを離したいと思っているかどうかを尋ねるためにポップオーバーを表示することは想定されていないため、「バック」機能に追加すると機能します。

のWindows 10アプリケーションに使用される最終的なコードは次のとおりです。

document.addEventListener('backbutton', function() { 
    $rootScope.back(); 
    $rootScope.$apply(); 
}, false); 

$rootScope.back = function(execute) { 
    var path = $location.$$path; 
    if (path !== '/') { 
     $location.path(path.split('/').slice(0, -1).join('/')); 
    } else { 
     if (window.device.platform.toLowerCase() === 'windows') { 
      throw new Error('Exit'); // This will suspend the app 
     } else { 
      $rootScope.exitApp(); 
     } 
    } 
}.bind(this); 
1

ます。また、この使用することができます

if (device.platform.toLowerCase() === "windows") { 
    //this closes the app and leaves a message in the windows system eventlog if error object is provided 
    MSApp.terminateApp(); 
} else { 
    navigator.app.exitApp() 
} 
関連する問題