Подтвердить что ты не робот

IOS Safari не распознает схемы URL после отмены пользователем

Недавно я заметил странное поведение в Safari.

Я зарегистрирую схему URL для своего приложения и введите myapp:// в Safari. Это немедленно запускает мое приложение.

Затем я вернусь в Safari и снова введите myapp:// в Safari, на этот раз он подскажет мне "Открыть эту страницу в" myapp "?" Отменить или Открыть.

Мое приложение запустится, если я коснусь открытого, и последующие попытки показывают одно и то же предупреждение. Если я попытаюсь нажать на отмену, мое приложение не запустится. который ожидается.

Однако, если я снова введу myapp:// в строку URL, мне будет предложено "Невозможно открыть страницу". "Safari не может открыть страницу, потому что адрес недействителен".

Это приведет к сбою таким же образом для всех последующих попыток, пока я не убью Safari и не заново запустил его или не открою другую вкладку.

Это то же самое поведение с Youtube и Evernote. я предполагаю, что Safari кэшировал URL-адрес как недопустимый URL-адрес, когда пользователь отменил отмену. Существует ли официальная документация по этому поведению?

Bbserved в iOS 8.1.2 и iOS 6.1.3

4b9b3361

Ответ 1

В 9.1 проблема все еще существует. Решение для меня просто перезапускает сафари (проведите по экрану, чтобы очистить его от фона).

Ответ 2

У меня была та же проблема. После того, как он был отменен, это приведет к ошибке.

То, что я сделал, это отправить дополнительный параметр с меткой времени, поэтому Safari не будет кэшировать его. Поэтому после последнего параметра я добавил foo param с количеством миллисекунд с полуночи 1 января 1970 года. Я использую as3, но это должно быть доступно для всех разработчиков:

var foo:Number = new Date().time; //The number of milliseconds since midnight January 1, 1970
var urlRequest:URLRequest = new URLRequest(url+"&foo="+foo);

Ответ 3

перезапуск приложения Safari или открытие новой вкладки разрешили эту проблему

Ответ 4

Когда вы вызываете ваш url, добавьте уникальное значение, такое как timeStamp, к вашему URL-адресу

double currentt = [[NSDate new] timeIntervalSince1970];
NSTimeInterval differ= [[NSDate dateWithTimeIntervalSince1970:currentt] timeIntervalSinceDate:[NSDate dateWithTimeIntervalSince1970:1296748524]];
NSLog(@"differ: %f", differ);
NSString *url =[NSString stringWithFormat: @"https://thisisawebsite&timestamp=%f", differ];

Всегда будет видеть всплывающее окно, пока вы не нажмете "ОК"