ios safari не распознает схемы url после отмены пользователем

<p>я недавно заметил странное поведение в safari.</p><p>я зарегистрировал схему url для своего приложения и ввел <code>myapp://</code> в safari . это немедленно запустит мое приложение.</p><p>затем я возвращаюсь в safari и снова ввожу <code>myapp://</code> в safari, на этот раз он мне подсказывает<strong> "открыть эту страницу в" myapp "?" </strong>отмена или открыть.</p><p>мое приложение запустится, если я нажму на кнопку открыть, и при последующих попытках отобразится то же предупреждение. если я попытаюсь нажать отмена, мое приложение не запустится. что ожидается.</p><p>однако, если я снова введу <code>myapp://</code> в строку url, мне будет предложено<strong> «не удается открыть страницу» «safari не может открыть страницу, потому что адрес недействителен». </strong></p><p>это не удастся таким же образом для всех последующих попыток, пока я не убью safari и не перезапущу его, или не открою другую вкладку.</p><p>это то же самое поведение с youtube и evernote. я предполагаю, что safari кэшировал url-адрес как недопустимый, когда пользователь нажимает кнопку отмены. есть ли официальная документация по этому поведению?</p><p>bbserved в ios 8.1.2 и ios 6.1.3</p>

<p>в 9.1 проблема все еще существует. решение для меня просто перезапустить сафари (проведите пальцем вверх, чтобы очистить его от фона).</p>

<p>у меня такая же проблема. после отмены выдаст эту ошибку.</p><p>я отправил дополнительный параметр с отметкой времени, чтобы safari не кешировал его. итак, после последнего параметра я добавил параметр foo с числом миллисекунд с полуночи 1 января 1970 года. я использую as3, но это должно быть доступно для чтения всем разработчикам:</p><pre><code>var foo:number = new date().time; //the number of milliseconds since midnight january 1, 1970 var urlrequest:urlrequest = new urlrequest(url+"&foo="+foo); </code></pre>

<p>перезапуск приложения safari или открытие новой вкладки решили эту проблему</p>

<p>когда вы вызываете ваш url, добавьте уникальное значение, например timestamp, к вашему url-вызову.</p><pre><code>double currentt = [[nsdate new] timeintervalsince1970]; nstimeinterval differ= [[nsdate datewithtimeintervalsince1970:currentt] timeintervalsincedate:[nsdate datewithtimeintervalsince1970:1296748524]]; nslog(@"differ: %f", differ); nsstring *url =[nsstring stringwithformat: @"https://thisisawebsite×tamp=%f", differ]; </code></pre><p>всегда будет видеть всплывающее окно, пока вы не нажмете «хорошо»</p>

<p>добавление следующего кода в appdelegate решило мою проблему, надеюсь, это сработает и у вас.</p><pre><code>func application(\_ app: uiapplication, open url: url, options: [uiapplicationopenurloptionskey : any] = [:]) -> bool { let notification = notification(name: notification.name(rawvalue: "appnotificationlaunchstring"), object: nil, userinfo: [uiapplicationlaunchoptionskey.url:url]) notificationcenter.default.post(notification) return true } </code></pre>