【问题标题】:How to set UIActivityViewController Gmail Share Subject different than body如何设置 UIActivityViewController Gmail 共享主题与正文不同
【发布时间】:2015-05-20 13:01:36
【问题描述】:

我正在使用来自 Google 的 Gmail 共享扩展程序。我正在提供以下实现:

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

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

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

对于邮件客户端(来自 Apple),它进入下面的委托方法,但 Gmail

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

相反,它显示的主题与正文相同。我想知道如何为 Gmail 共享选项设置与正文不同的主题。

【问题讨论】:

  • 几个小时前我遇到了完全相同的问题,确实是个谜:|
  • 你试过这样吗? UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"你要分享的正文字符串"] applicationActivities:nil]; [activityViewController setValue:@"你的邮件主题" forKey:@"subject"]; activityViewController.completionHandler = ^(NSString *activityType, BOOL 完成) { // ... };
  • @Shai 我在使用 Gmail 共享扩展程序时遇到了很多问题。我发现很少有人破解,但仍然很少有人是神秘的:(
  • 问题依然存在
  • 2020 年问题依然存在。

标签: ios iphone objective-c-blocks uiactivityviewcontroller


【解决方案1】:

解决方案非常简单 - 需要将 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 客户端以某种方式处理。

【讨论】:

    【解决方案2】:

    这是一个 GMail 应用问题

    错误报告已于 2017 年 6 月 12 日填写

    https://productforums.google.com/forum/#!topic/gmail/UJJx4BcRJiU;context-place=forum/gmail

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

    https://github.com/BranchMetrics/ios-branch-deep-linking/issues/789

    【讨论】:

    • 这真的还是 Gmail 的错误吗?似乎他们有一些时间来修复。
    • 看来他们并没有太在意
    【解决方案3】:

    我已经为此奋斗了几天,我能找到的所有内容都被标记为已知错误,但今天早上浏览 Reddit 只是为了好玩,我看到他们成功地设法至少有一个空的主题字段,问题是,如何?有人可能来自 Reddit 吗?如果您在本机邮件应用程序上共享相同的内容,它会用帖子的标题填充主题字段,这是预期的行为。

    更新:老兄!这家伙在 Reddit for iOS 上发现了他们是如何做到的(我注意到 Slack 也做到了)https://stackoverflow.com/a/51451433/1272263 他们在正文的开头添加了很多空格!截图比较了原始邮件(左侧)正文和 Gmail(右侧)正文:

    【讨论】:

    • 我在开始时用 2000 个空格字符填充文本,但我仍然没有得到一个干净的主题字段。有没有我应该使用的特殊字符?
    • 我也有相同的 =( 我尝试了很多特殊字符,如 \n 或 \r ,但我无法达到预期的结果......我希望有人能帮助我们。 ..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多