#ios #objective-c #deep-linking #url-scheme
#iOS #objective-c #глубокая привязка #url-схема
Вопрос:
Я запустил приложение, которое может обрабатывать схемы URL-адресов SMS или почты, но я не хочу открывать установленные приложения по умолчанию. Я пытался это сделать
[[UIApplication sharedApplication] openURL: url];
но при этом открываются приложения SMS и Почты по умолчанию.
Я попытался использовать UIActivityViewController
NSString *url=@"mailto:sample@gmail.com";
NSURL *schemeURL = [NSURL URLWithString:url];
NSString * title =[NSString stringWithFormat:@"Send Email",url];
NSArray* dataToShare = @[url];
UIActivityViewController* activityViewController =[[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:nil]
но это не приводит к предварительному заполнению поля получателя указанным электронным письмом.
Было бы неплохо, если бы поведение было таким же с UIActivityViewController, но давайте предварительно заполним информацию, такую как получатель.
Есть предложения?
Ответ №1:
Вы можете использовать приложения, отличные от стандартных, на macos, но я не думаю, что вы можете сделать это на iOS. Посмотрите, например https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl ?язык = objc .
Вы можете попробовать использовать URL, аналогичный приведенному ниже, для отправки с заданной темой и телом.
@"message://mailto://sample@gmail.com?subject=Subjectamp;body=Body"
Я думаю, что если вы отбросите message
бит, он все равно будет работать. Я использую это так внутри HTML-страницы внутри приложения где-нибудь.
Если вам нужны какие-либо специальные символы, вам придется закодировать их в теме и теле.
Комментарии:
1. Это не работает с UIActivityViewController. Получатель по-прежнему будет опущен
2. Хорошо, это работает для меня, хотя и в другом контексте. Хотя это должно сработать, но как именно, я не уверен. Иногда кажется, что вы бы использовали его так,
mailto:sample@gmail.com
как упоминалось здесь developer.apple.com/library/archive/featuredarticles /… Иногда вы кодируете@
, а иногда передаете адрес в качестве параметра, напримерmessage?mail=omnifocusmadeeasy@gmail.com
, который я получил от thesweetsetup.com/working-email-urls-macos3. Похоже, что это невозможно сделать в iOS, поскольку Apple отбрасывает получателя и просто помещает его прямо в тело. Кажется, работает в macOS, но, к сожалению, моя цель — iOS.