У меня была проблема с этим подходом: я хотел отправить несколько сообщений на устройство iphone, но казалось, что они были «перекрыты», поскольку не могли обрабатывать их все последовательно.
Пример: при выполнении этого кода:
window.location = "app://action/foo";
window.location = "app://action/bar";
Действие foo
никогда не выполнялось.
То, что я должен был сделать, было следующим:
waitingForMessage = false;
function MsgProcessed(){
waitingForMessage = false;
}
function SyncLaunchURL(url){
if (waitingForMessage){
setTimeout(function(){SyncLaunchURL(url)},100);
}else{
window.location = url
waitingForMessage = true;
}
}
SyncLaunchURL("app://action/foo");
SyncLaunchURL("app://action/bar");
При таком подходе iphone должен вызывать MsgProcessed () после обработки вызова. Этот способ работает для меня и, возможно, помогает кому-то с той же проблемой!