Мне нужно открыть приложение и получить ответ, который он вернет после выбора. Я делаю это с помощью плагина WebIntent (https://ionicframework.com/docs/native/web-intent) для Android, и он работает. Теперь я пытаюсь сделать то же самое для iOS, я использую InAppBrowser (https://ionicframework.com/docs/native/in-app-browser), но есть ошибка, если вы открываете приложение со ссылкой, используя target: "_system", прослушиватели событий не запускаются. Есть ли другие способы сделать это в iOS?
Пример WebIntent:
const options = {
action: this.webIntent.ACTION_VIEW,
url: 'app://url',
extras: {
my_extras: 'extras'
}
};
this.webIntent.startActivityForResult(options).then((intent) => {
if (intent.extras.resultCode === -1) {
this.doSomething(intent.extras);
} else {
// handle errors
}
}, (error) => {
// handle case when app is not installed
});
Пример моей попытки с InAppBrowser
let browser = this.iab.create('app://url', '_system');
browser.on('exit').subscribe((event) => {
console.log('exit'); // this event is fired actually
}, err => {
console.log(err);
});
browser.on('message').subscribe(event => {
console.log('message'); // all other events like this one are not fired
}, err => {
console.log(err);
});
Спасибо за любую помощь!
- РЕДАКТИРОВАТЬ -
Итак, я нашел способ в Интернете использовать слушателей в InAppBrowser с целью _system. Вам нужно создать браузер с целью _blank, а затем снова открыть его в обработчике событий с помощью _system target. Пример:
openBrowser() {
const url = 'app://url'
const browser = this.iab.create(url, '_blank');
browser.on('beforeload').subscribe(evt => {
this.beforeloadEventHandler(evt, url);
}
// close the blank browser where you want
browser.close();
}
public beforeloadEventHandler(event, url) {
const browser = this.iab.create(url, '_system');
browser.on('beforeload').subscribe(evt => {
this.beforeloadEventHandler(evt, url);
});
// your logic
console.log('beforeload evt');
console.log(JSON.stringify(event));
}
Но, в конце концов, это решение не работает для меня, потому что я не получаю никаких данных с помощью слушателей InAppBrowser, я думаю, есть другой способ сделать это.