Ios 如何设置UIActivityViewController Gmail共享主题与正文不同

Ios 如何设置UIActivityViewController Gmail共享主题与正文不同,ios,iphone,objective-c-blocks,uiactivityviewcontroller,Ios,Iphone,Objective C Blocks,Uiactivityviewcontroller,我正在使用谷歌的Gmail共享扩展。我正在实施: - (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType; - (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController; -

我正在使用谷歌的Gmail共享扩展。我正在实施:

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType;

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController;

- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType;
对于邮件客户端(来自苹果),它进入下面的委托方法,但Gmail

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

相反,它显示的主题与正文相同。我想知道如何为Gmail股票期权设置不同于正文的主题。

这是Gmail应用程序的问题

2017年6月12日填写了缺陷报告

关于这个问题的另一次讨论:


我已经为此奋斗了几天,我所能找到的都被标记为一个已知的bug,但今天早上浏览Reddit只是为了好玩,我发现他们至少成功地获得了一个空的主题字段,问题是,如何?可能有来自Reddit的人吗?如果您在本机邮件应用程序上共享相同的内容,则会在主题字段中填入文章标题,这是预期的行为

更新:伙计!这家伙发现了他们在Reddit for iOS上是如何做到这一点的(我注意到Slack也做到了),他们在正文的开头添加了很多空格!拍摄了一张截图,比较了原始邮件(左侧)正文和Gmail(右侧)正文:

解决方案非常简单-需要将NSUrl传递到活动项列表

以下是Swift上的一个示例:

ActivityViewController(activityItems: [URL(string: "https://www.apple.com")!])
这是给Xamarin的:

    public override NSObject GetItemForActivity(UIActivityViewController activityViewController, NSString activityType)
    {
        NSObject item = null;
        if (activityType == UIActivityType.Mail)
        {
            item = PlaceholderItem;
        }
        else if (activityType == new NSString(_gmailActivityId))
        {
            item = NSUrl.FromString("https://www.apple.com");
        }
        else if (activityType == new NSString(_sparkActivityId))
        {
            item = PlaceholderItem;
        }
        return item ?? base.GetItemForActivity(activityViewController, activityType);
    }

从这个角度来看,如果您要传递任何字符串项,它们将被复制。App Store、Facebook和其他网站都在传递URL或URL+图像,这看起来也是Gmail客户端在处理的。

几个小时前,我遇到了完全相同的问题,确实是个谜:|你试过这样做吗?UIActivityViewController*activityViewController=[[UIActivityViewController alloc]initWithActivityItems:@[@“要共享的正文字符串”]应用程序活动:nil];[activityViewController设置值:@“您的电子邮件主题”forKey:@“主题”];activityViewController.completionHandler=^(NSString*activityType,BOOL completed){/…}@Shai我对Gmail共享扩展有很多问题。我找到hack的人不多,但仍有少数人是神秘的:(这个问题仍然存在。到2020年,这个问题仍然存在。这真的还是Gmail的一个缺陷吗?看起来他们已经有一些时间来修复了。看起来他们不太关心它。我在开始时用2000个空格字符填充文本,但我仍然没有一个干净的主题字段。我应该使用一个特殊的字符吗?我也有相同的字符。)=(我尝试了许多特殊字符,如\n或\r,但未能达到预期效果…我希望有人能在这方面帮助我们。。。