Как узнать действие нажатия кнопки в браузере - PullRequest
0 голосов
/ 11 мая 2018

Я использовал собственную схему URL для открытия URL в браузере. У меня есть одна кнопка в браузере.как узнать в приложении, когда в браузере нажата кнопкассылки или глубокие ссылки?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Использовать универсальные ссылки

При ссылках из браузера вам обязательно следует использовать универсальные ссылки.Если пользователь не установил приложение и щелкнул по схеме URI, в браузере отобразится сообщение об ошибке.Есть способы обойти это, например, перенаправление javascript , но они очень хакерские и не всегда работают.

Обнаружение клика в браузере

Функции вВаш делегат приложения не будет вызываться до тех пор, пока приложение не будет передано управление из браузера, поэтому невозможно обнаружить щелчок браузера в самом приложении.Вы должны будете использовать некоторые обработчики событий щелчка JavaScript, чтобы обнаружить это, но вся передача обслуживания обрабатывается на уровне ОС, поэтому вы не сможете контролировать это.

Регистрация открытия по глубокой ссылке

Когда глубокая ссылка откроет ваше приложение, оно вызовет одну из трех функций.

из схемы URI (myapp: //) :

application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool

только из Universal Link, только когда приложение работает в фоновом режиме:

(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler

Из Universal Link, если приложение закрыто

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

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

Используйте Branch или стороннюю организацию

Наконец,Вы можете использовать Branch , которая использует URI и универсальные ссылки, когда это необходимо, и перенаправляет все функции-делегаты приложения на один обратный вызов, поэтому вам не нужно обновлять логику маршрутизации в трех разных местах.

0 голосов
/ 11 мая 2018

В случае Universal Link Вы должны реализовать метод делегата.Надеюсь, этот фрагмент будет полезен.

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler {
        if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURLComponents *URLComponents = [NSURLComponents componentsWithURL:userActivity.webpageURL resolvingAgainstBaseURL:YES];
        [[UniversalLinksManagerLocator model] handleDeepLink:userActivity.webpageURL];
    }
}
...