2016-06-21 21 views
12

我通過共享來自其他應用程序的內容可以看到,使用分享表分享到Gmail郵件應用程序時,可以設置不同的主題和正文。我已經實現了它,它在本地郵件應用程序上運行良好,但不適用於Gmail。UIActivityViewController無法在分享到Gmail應用程序時設置主題

進入Yelp並分享業務,然後從分享表中選擇gmail,我發現主題和主體是不同的。主題包含業務地址,而主體包含地址+ Yelp上業務的鏈接。

我試圖在本地郵件應用程序上成功複製此邏輯,但不能在Gmail應用程序中複製。

我曾嘗試以下:

實施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"; 
} 

結果

蘋果郵件主題設定爲 「主題」,身體爲 「體」

Gmail主題設置爲「body」,Body設置爲「body 「

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

分享到Gmail應用程序時永遠不會被調用。

我再嘗試做

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

結果

蘋果郵件主題設定爲 「主題」,身上設置的多個黑客方式 「身體」

的Gmail標題設爲「正文」,正文設爲「正文」

任何使Gmail像Apple Mail一樣的方式?

同樣,我看到其他應用程序(如Yelp和Safari)通過共享表格獲得了Gmail應用程序的正確行爲。任何意見,將不勝感激,謝謝。

+0

看起來像是Gmail剛剛從身體,直到第一個空行拉,使該主題 – dan

+0

@丹你有一個測試字符串我可以試試?我試過@「這是第一部分。\ n \ n這是第二部分。」但仍然是相同的行爲。 –

+0

嗨!你找到了解決方案嗎?我面臨同樣的問題 –

回答

-1

[_activityViewController setValue:subject forKey:@"subject"]; - 不支持的方式。

正確設置身體和主題的方式(iOS 7.0及更高版本) - 實施UIActivityItemSource協議關於要共享的項目。

// 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 

而且比目前它:

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

在我的問題中,我發佈我已經嘗試了UIActivityItemSource協議,它不適用於gmail應用程序,只適用於本地郵件應用程序。與Gmail應用程序共享時,您是否親自嘗試實施? –

相關問題