2016-06-21 11 views
12

Widzę, udostępniając treści z innych aplikacji, że możliwe jest ustawienie innego tematu i treści podczas korzystania z arkusza udostępniania, aby udostępnić go w aplikacji Gmail Mail. Zaimplementowałem go i działa dobrze w natywnej aplikacji pocztowej, ale nie w Gmailu.UIActivityViewController nie może ustawić tematu podczas udostępniania aplikacji Gmaila

Przechodząc do Yelp i udostępniając firmę, wybierając Gmaila z arkusza udostępniania, widzę, że temat i treść są różne. Temat zawiera adres firmy, a organ zawiera adres + link do firmy na Yelp.

Próbowałem pomyślnie powielić tę logikę w macierzystej aplikacji Mail, ale nie w aplikacji Gmail.

Próbowałem następujące:

metod

wykonawcze UIActivityItemSource

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil]; 

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

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { 
    return @"body"; 
} 

- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType { 
    return @"subject"; 
} 

Wynik

Apple Mail Temat ustawiony na "przedmiot", Body ustawiony na "ciało"

Temat Gmaila ustawiony na "body", Body ustawiony na "body" "

- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType 

Nie jest wywoływany podczas udostępniania w aplikacji Gmail.

I spróbuj bardziej technikę sposób to zrobić

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"body"] applicationActivities:nil]; 
[activityViewController setValue:@"subject" forKey:@"subject"]; 

Wynik

Apple Mail Temat ustawiony na "przedmiot", ustaw ciała do "ciała"

Gmail Temat ustawiony na "body", Body ustawiony na "body"

Jakikolwiek sposób na zachowanie Gmaila jak Apple Mail?

Jeszcze raz zauważyłem, że inne aplikacje, takie jak Yelp i Safari, uzyskały poprawne działanie z aplikacji Gmail poprzez udostępnianie arkusza. Każda rada byłaby doceniona, dziękuję.

+0

Wygląda jak Gmail po prostu ciągnie się od ciała w górę, aż do pierwszego pustego wiersza i sprawia, że ​​przedmiot – dan

+0

@dan Czy masz ciąg testowy mogę spróbować ? Próbowałem @ "To jest pierwsza część. \ N \ nTo jest druga część." ale nadal to samo zachowanie. –

+0

Cześć! Czy znalazłeś na to rozwiązanie? Stoję w obliczu tego samego problemu –

Odpowiedz

-1

[_activityViewController setValue:subject forKey:@"subject"]; -Nie obsługiwany sposób.

Prawidłowy sposób ustawiania treści i tematu (iOS 7.0 i nowsze) - implementacja protokołu UIActivityItemSource dla elementu do udostępnienia.

// EmailDataProvider.h 

@interface EmailItemProvider : NSObject <UIActivityItemSource> 

@property (nonatomic, strong) NSString *subject; 
@property (nonatomic, strong) NSString *body; 

@end 


// EmailDataProvider.m 

    @implementation EmailDataProvider 

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

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

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

@end 

I niż obecny to:

EmailDataProvider *emailItem = [[EmailDataProvider alloc]init]; 

emailItem.subject = @"This is Subject text."; 

emailItem.body = @"This is Body,set by programatically"; 

UIActivityViewController *activityViewController = 
[[UIActivityViewController alloc] initWithActivityItems:@[emailItem] 
            applicationActivities:nil]; 

[self presentViewController:activityViewController animated:YES completion:nil]; 
+0

W moim pytaniu napisałem, że już wypróbowałem protokół UIActivityItemSource i nie działało ono dla aplikacji Gmail, działa tylko dla natywnej aplikacji pocztowej. Czy samodzielnie wypróbowałeś tę samą wersję aplikacji Gmail? –

Powiązane problemy