Я создаю экстренное приложение, и одна из функций - это открыть приложение при встряхивании, теперь я понимаю, что приложение должно работать в фоновом режиме.
и я использую cordova-background-mode и кордова трясут и все работает,
однако когда телефон на домашнем экране (приложение просто свернуто). приложение не запускается при встряхивании, но когда я снова открываю приложение, нажимая на его значок, оно показывает, что произошло событие встряхивания, и открывает другое приложение, которое я использую для тестирования.
Как получить это открыть приложение при встряхивании, когда приложение находится в фоновом режиме?
Вот мой код
this.platform.ready().then((e) => {
this.backgroundMode.enable();
this.backgroundMode.setEnabled(true);
this.statusBar.styleDefault();
this.splashScreen.hide();
this.shake.startWatch().subscribe(() => {
console.log(`watching...${e}`);
alert('shake');
const options: AppLauncherOptions = {
}
if(this.platform.is('ios')) {
options.uri = 'fb://'
} else {
options.packageName = 'com.facebook.katana'
}
this.appLauncher.canLaunch(options).then((launch:Boolean)=>{
if(launch){
this.appLauncher.launch(options).then(()=>{
alert('Launched')
},
(err)=>{
alert(JSON.stringify(err))
})
}else{
alert(JSON.stringify("unable to launch app"));
}
},(err)=>{
alert(JSON.stringify(err));
})
});
Edit
это мой код, и он работает, однако проблема в том, что если я открою другое приложение, например whatsapp, но это может быть любое приложение, и закрою его, а затем, если я встряхну телефон, откроется последнее приложение, которое я использовал, вместо запуска моего приложения.
startBackgroundMode(){
this.backgroundMode.enable();
this.backgroundMode.overrideBackButton();
this.backgroundMode.on('activate').subscribe(value => {
this.backgroundMode.disableWebViewOptimizations();
this.shakePhone();
});
}
shakePhone(){
this.shake.startWatch().subscribe(() => {
console.log(`watching...`);
this.openApp();
});
}
openApp(){
const options: AppLauncherOptions = {
}
options.packageName = 'this is my app's package name'
this.appLauncher.launch(options);
}