Ionic Native Diagnostic 未在 iOS 中触发
Ionic Native Diagnostic not Firing in iOS
我有一个应用程序可以检查商店定位器页面的位置服务 - 使用地理定位来获取离用户最近的商店。在最近的应用程序更新之前一直运行良好,然后出现问题。我试过更新插件、cordova、ionic 等,但找不到问题所在。基本上,本机诊断插件不会触发,但我也没有收到任何抛出的错误。下面是我们用来检查定位服务的函数:
checkIfLocationPerms(){
let alert = this.alertCtrl.create({
title: 'Error Loading Locations',
subTitle:`You must allow geolocation permissions for this application before continuing. Please Change them in the settings of your device`,
buttons: ['OK']
});
let timeoutFunct = setTimeout(()=>{
this.goHome();
alert.present();
}, 5000);
this.Diagnostic.isLocationAvailable().then(status=>{
if(status == true){
clearTimeout(timeoutFunct);
this.loadMap();
} else {
timeoutFunct;
this.Diagnostic.requestLocationAuthorization().then(data=>{
if(data == this.Diagnostic.permissionStatus.GRANTED_WHEN_IN_USE ||
data == this.Diagnostic.permissionStatus.GRANTED) {
clearTimeout(timeoutFunct);
this.loadMap()
} else {
clearTimeout(timeoutFunct);
this.goHome();
alert.present();
return false;
}
}).catch(err=>{
clearTimeout(timeoutFunct);
this.goHome();
alert.present();
})
}
}).catch(err=>{
clearTimeout(timeoutFunct);
this.goHome();
alert.present();
})
}
基本上,clearTimeout 函数在我从 Diagnostic 返回任何内容之前完成。如果我不调用 clearTimeout 函数,则不会返回任何内容,也不会出现错误。以下是我的离子信息:
Ionic:
Ionic CLI : 6.11.8 (/usr/local/lib/node_modules/@ionic/cli)
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.4
Cordova:
Cordova CLI : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : ios 5.1.1
Cordova Plugins : cordova-plugin-ionic-webview 4.2.1, (and 18 other plugins)
Utility:
cordova-res : 0.15.1
native-run : 1.0.0
System:
ios-deploy : 1.10.0
ios-sim : 6.1.3
NodeJS : v13.13.0 (/usr/local/Cellar/node/13.13.0_1/bin/node)
npm : 6.14.7
OS : macOS Catalina
Xcode : Xcode 11.7 Build version 11E801a
这是来自 package.json
的相关插件的版本
"@ionic-native/diagnostic": "^5.28.0",
"@ionic-native/geolocation": "^4.18.0",
我可以补充一点,即使位置服务被允许,我也没有收到回复。我也看不到允许应用程序访问定位服务的方法。我只是不知道从这里去哪里,我已经为此奋斗了一个星期试图弄清楚。有人有什么建议吗?
我唯一能够获得正确权限的弹出窗口是更新诊断插件。我使用所有最新版本的 Ionic、Diagnostic 等创建了一个测试应用程序,并且运行正常。
我有一个应用程序可以检查商店定位器页面的位置服务 - 使用地理定位来获取离用户最近的商店。在最近的应用程序更新之前一直运行良好,然后出现问题。我试过更新插件、cordova、ionic 等,但找不到问题所在。基本上,本机诊断插件不会触发,但我也没有收到任何抛出的错误。下面是我们用来检查定位服务的函数:
checkIfLocationPerms(){
let alert = this.alertCtrl.create({
title: 'Error Loading Locations',
subTitle:`You must allow geolocation permissions for this application before continuing. Please Change them in the settings of your device`,
buttons: ['OK']
});
let timeoutFunct = setTimeout(()=>{
this.goHome();
alert.present();
}, 5000);
this.Diagnostic.isLocationAvailable().then(status=>{
if(status == true){
clearTimeout(timeoutFunct);
this.loadMap();
} else {
timeoutFunct;
this.Diagnostic.requestLocationAuthorization().then(data=>{
if(data == this.Diagnostic.permissionStatus.GRANTED_WHEN_IN_USE ||
data == this.Diagnostic.permissionStatus.GRANTED) {
clearTimeout(timeoutFunct);
this.loadMap()
} else {
clearTimeout(timeoutFunct);
this.goHome();
alert.present();
return false;
}
}).catch(err=>{
clearTimeout(timeoutFunct);
this.goHome();
alert.present();
})
}
}).catch(err=>{
clearTimeout(timeoutFunct);
this.goHome();
alert.present();
})
}
基本上,clearTimeout 函数在我从 Diagnostic 返回任何内容之前完成。如果我不调用 clearTimeout 函数,则不会返回任何内容,也不会出现错误。以下是我的离子信息:
Ionic:
Ionic CLI : 6.11.8 (/usr/local/lib/node_modules/@ionic/cli)
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.4
Cordova:
Cordova CLI : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : ios 5.1.1
Cordova Plugins : cordova-plugin-ionic-webview 4.2.1, (and 18 other plugins)
Utility:
cordova-res : 0.15.1
native-run : 1.0.0
System:
ios-deploy : 1.10.0
ios-sim : 6.1.3
NodeJS : v13.13.0 (/usr/local/Cellar/node/13.13.0_1/bin/node)
npm : 6.14.7
OS : macOS Catalina
Xcode : Xcode 11.7 Build version 11E801a
这是来自 package.json
的相关插件的版本"@ionic-native/diagnostic": "^5.28.0",
"@ionic-native/geolocation": "^4.18.0",
我可以补充一点,即使位置服务被允许,我也没有收到回复。我也看不到允许应用程序访问定位服务的方法。我只是不知道从这里去哪里,我已经为此奋斗了一个星期试图弄清楚。有人有什么建议吗?
我唯一能够获得正确权限的弹出窗口是更新诊断插件。我使用所有最新版本的 Ionic、Diagnostic 等创建了一个测试应用程序,并且运行正常。