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

UIActivityViewController Gmail Поделиться темой и телом

Я использую некоторый контент через UIActivityController.

Он отлично работает для других параметров.

Я могу получить subject и body в приложении по умолчанию Mail.

Но когда я использую для совместного использования контента с gmail, мой subject почты ушел, и я получаю body содержимое в разделе Gmail Subject's:

Вот мой код:

    NSString *body = @"I am Body";
NSString *tagLine = @"I am Subject";

   NSArray *objectToShare = [NSArray arrayWithObjects:body, nil];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectToShare applicationActivities:nil];

[activityVC setValue:tagLine forKey:@"subject"];

NSArray *excludeActivities = @[UIActivityTypeAirDrop,
                               UIActivityTypePrint,
                               UIActivityTypeAssignToContact,
                               UIActivityTypeSaveToCameraRoll,
                               UIActivityTypeAddToReadingList,
                               UIActivityTypePostToVimeo];

activityVC.excludedActivityTypes = excludeActivities;

[self presentViewController:activityVC animated:YES completion:nil];

Для лучшего изображения Вот скриншот:

В приложении по умолчанию:

введите описание изображения здесь

С Gmail:   введите описание изображения здесь

Я также пробовал разные ответы на SO. Но никто из них не работает.

4b9b3361

Ответ 1

На момент написания этой статьи Google не разрешает указывать тему электронной почты. Люди сообщали об этом как об ошибке несколько раз, и кажется, что эта функция все еще не поддерживается.

Посмотрев на другие продукты, принадлежащие Google, и попытавшись поделиться некоторым содержимым через Gmail, вы увидите, что в общей активности Gmail нет темы (например, Google Chrome) или она совпадает с телом электронной почты (Google Translator), в то время как если вы поделитесь ими с обычным приложением, то у некоторых из них есть тема. Так что даже продукты Google ведут себя одинаково.

Если вы используете subjectForActivityType останова внутри функции subjectForActivityType вы поймете, что действие Gmail не достигнет точки останова, в то время как почта по умолчанию и другие действия будут пытаться прочитать тему.

@implementation EmailItemProvider

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
    return _body;
}

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
    return _body;
}

- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType {
    return _subject;
}