iOS
Глубокая привязка в iOS
Поиск…
замечания
Полезная документация Apple с примерами и пояснениями.
Открытие приложения на основе его схемы URL
Чтобы открыть приложение с определенной схемой URL todolist://
:
Objective-C
NSURL *myURL = [NSURL URLWithString:@"todolist://there/is/something/to/do"];
[[UIApplication sharedApplication] openURL:myURL];
стриж
let stringURL = "todolist://there/is/something/to/do"
if let url = NSURL(string: stringURL) {
UIApplication.shared().openURL(url)
}
HTML
<a href="todolist://there/is/something/to/do">New SMS Message</a>
Примечание. Полезно проверить, можно ли открыть ссылку, чтобы в противном случае отобразить соответствующее сообщение пользователю. Это можно сделать с
canOpenURL:
методаcanOpenURL:
Добавление схемы URL в собственное приложение
Предположим, вы работаете над приложением под названием MyTasks
, и вы хотите разрешить входящие URL-адреса создавать новую задачу с заголовком и телом. URL-адрес, который вы проектируете, может выглядеть примерно так:
mytasks://create?title=hello&body=world
(Конечно, параметры text
и body
используются для заполнения нашей задачи, которую мы создаем!)
Вот «Большие шаги» для добавления этой схемы URL в ваш проект:
- Зарегистрируйте URL-схему в файле
Info.plist
вашего приложения, чтобы система узнала, когда нужно перенаправить URL-адрес в ваше приложение. - Добавьте функцию в ваш
UIApplicationDelegate
который принимает и обрабатывает входящие URL-адреса. - Выполнять любую задачу при открытии этого URL-адреса.
Шаг 1. Зарегистрируйте схему URL в Info.plist:
Во-первых, нам нужно добавить запись «URL-адреса» в наш файл Info.plist. Нажмите кнопку (+) здесь:
... затем введите уникальный идентификатор для вашего приложения, а также схему URL, которую вы хотите использовать. Быть конкретными! Вы не хотите, чтобы схема URL конфликтует с реализацией другого приложения. Лучше быть слишком длинным здесь, чем слишком коротким!
Шаг второй: обрабатывайте URL-адрес в UIApplicationDelegate
Нам нужно реализовать application:openURL:options:
на нашем UIApplicationDelegate
. Мы проверим входящий URL
и посмотрим, есть ли какое-либо действие, которое мы можем предпринять!
Одна из реализаций будет такой:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if url.scheme == "mytasks" && url.host == "create" {
let title = // get the title out of the URL's query using a method of your choice
let body = // get the title out of the URL's query using a method of your choice
self.rootViewController.createTaskWithTitle(title, body: body)
return true
}
return false
}
Шаг третий: выполните задачу в зависимости от URL-адреса.
Когда пользователь открывает ваше приложение через URL-адрес, они, вероятно, ожидали, что что- то произойдет. Возможно, это переход на часть контента, возможно, это создание нового элемента - в этом примере мы собираемся создать новую задачу в приложении!
В приведенном выше коде мы можем увидеть вызов self.rootViewController.createTaskWithTitle(:body:)
- поэтому, если ваш AppDelegate
имеет указатель на свой контроллер корневого представления, который правильно выполняет функцию, вы все настроены!
Настройка deeplink для вашего приложения
Настройка глубокой привязки для вашего приложения проста. Вам просто нужен небольшой URL-адрес, который вы хотите открыть для своего приложения.
Выполните шаги, чтобы настроить глубокую привязку для вашего приложения.
Давайте создадим проект и назовите его DeepLinkPOC.
Теперь выберите цель проекта.
После выбора цели выберите вкладку «информация».
Прокрутите вниз до тех пор, пока не увидите параметр URL-адресов
Нажмите «+».
Вы увидите, что схемы URL добавляют строку, с помощью которой вы хотите открыть приложение. Давайте добавим « DeepLinking » в схемы URL.
Итак, чтобы открыть приложение, вы можете запустить его, введя «DeepLinking: //» в ваше сафари. Строка с глубокой связью имеет следующий формат.
[scheme]://[host]/[path] --> DeepLinking://path/Page1
где, Схема: «Глубокая точка» Хост: путь «путь»: «Страница1»
Примечание . Даже если вы не добавите хост и путь, он запустит приложение, поэтому не беспокойтесь. Но вы можете добавить хост и путь для дополнительной перенаправления на определенную страницу после запуска приложения.
- Теперь добавьте следующий метод в ваш appdelegate.
Swift:
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
Objective-C:
-(BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
Вышеупомянутый метод вызывается всякий раз, когда ваше приложение запускается с использованием строки глубокой привязки, установленной для вашего приложения.
- Настало время установить приложение, но подождите, прежде чем вы сразу перейдете к запуску button.Lets делает небольшое изменение в методе запуска приложения схемы.
- Выберите и отредактируйте свою схему как
Теперь нажмите кнопку «Выполнить» (если вы хотите добавить точку останова в ваши методы didFinishLaunchingWithOptions и openURL для наблюдения за значениями)
Появится сообщение «Ожидание запуска DeepLinkPOC (или вашего имени приложения)».
Откройте сафари и введите « DeepLinking: // » в строку поиска, на которой появится приглашение «открыть эту страницу в DeepLinkPOC», чтобы открыть приложение.
Надеюсь, вам нужно знать, как настроить глубокую привязку к вашему приложению :)