そして、私は約束を抱くように頭を抱えていると思うとき、私は何かを実装しようとすると、私は角度を完全に理解していないことがわかるようにつまずく。コードラインの権限をpromise chainにラップするAngularJS?
Arrgh!
私は自分のアプリケーションを初期化しており、Init ControllerとServiceファクトリを作成して、アプリケーションに必要な権限をユーザに設定するように要求しています。しかし、.factoryでは、私は約束のシーケンスを正しく作成する方法を理解することができません。私は逐次的にユーザーに尋ねたいと思うので、約束のチェーンをつくっています。
Promise 1 = ask for sms access
process 1 results
Promise 2 = ask for GET_ACCOUNTS
process 2 results
Promise 3 = ask for GPS
process 3 results
return to controller with all results
最初の約束は、プラグインので、私は戻って要求しているユーザの権限で非同期使用しています、私を投げている:
function requestReadPermission() { // from cordova-plugin-sim
// no callbacks required as this opens a popup which returns async
window.plugins.sim.requestReadPermission();
}
return $q(requestReadPermission)
.then(function(status) {
console.log(status) ; // just see what comes back
// do something with status
function getAccounts() {
cordova.plugins.diagnostic.requestContactsAuthorization() ;
}
return $q(getAccounts)
}).then(function(status) {
console.log(status) ; // just see what comes back
// do something with status
function getGPS() {
cordova.plugins.diagnostic.requestLocationAuthorization() ;
}
return $q(getGPS)
}).then(function(status) {
console.log(status) ; // just see what comes back
// do something with status
return allResults ;
})
また、第二の二約束はすでに、コールバック関数であることを見て..私が望むようにそれらを実装できるかどうかわかりません。彼らはcordova-plugin-diagnostics
から来て、ドキュメントに次のように呼ばれています。
cordova.plugins.diagnostic.requestContactsAuthorization(function(status){
if(status === cordova.plugins.diagnostic.permissionStatus.GRANTED){
console.log("Contacts use is authorized");
}
}, function(error){
console.error(error);
});
cordova.plugins.diagnostic.requestLocationAuthorization(function(status){
switch(status){
case cordova.plugins.diagnostic.permissionStatus.NOT_REQUESTED:
console.log("Permission not requested");
break;
case cordova.plugins.diagnostic.permissionStatus.GRANTED:
console.log("Permission granted");
break;
case cordova.plugins.diagnostic.permissionStatus.DENIED:
console.log("Permission denied");
break;
case cordova.plugins.diagnostic.permissionStatus.DENIED_ALWAYS:
console.log("Permission permanently denied");
break;
}
}, function(error){
console.error(error);
});
[OK]を、私は、コールバックが私を投げた知っていました。どのようにあなたは 'シム'のアクセス許可を組み込むのだろうか?私はsimカードにアクセスすることを可能にするcordova-plugins診断を探していましたが、見つからなかったので、simova情報を得るためにcordova-plugin-simを使用していましたが、simの要求許可の実装は非同期ポップアップでコールバックはありません。 btw - 助けてくれてありがとう。私は正しい方向に行っていたが、オフトラックだった。 – rolinger