objective c — открывается с предложениями при попытке открыть схемы URL

#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-macos

3. Похоже, что это невозможно сделать в iOS, поскольку Apple отбрасывает получателя и просто помещает его прямо в тело. Кажется, работает в macOS, но, к сожалению, моя цель — iOS.