4

如何让我的应用程序出现在 Safari、照片等的共享活动列表中?我想让人们通过我的应用程序分享链接/图像或文本,就像他们在 facebook 上一样。

Facebook/Twitter 等在默认UIActivityType列表中可用,但 Pinterest、Zomato 等其他应用程序如何实现这一点?

4

3 回答 3

4

最简单的可能性是使用文件类型关联。那里已经有很多教程,因为这个概念已经很成熟了,所以我将在这里向您介绍主要关键字。

首先要确定的是您要支持的统一类型标识符 (UTI) 。以下是 Apple 当前可用的 UTI 列表。

然后,在您的 Xcode 项目中打开目标,然后转到Info选项卡。在那里您将找到文档类型条目。打开它,然后点击加号以添加新的文档类型。指定一个名称和你想要支持的 UTI(在这个例子中我选择了 PDF):

在此处输入图像描述

请注意,您还需要提供其他文档属性。大多数教程都(LSHandlerRank, Alternate)以键值对的形式出现,但我没有找到任何原因。它似乎也可以使用(foo, bar)

接下来,运行您的应用程序以使其在设备上注册。

当您现在拥有 PDF 时,比如说邮件应用程序中的附件,您的应用程序现在将出现在列表中:

在此处输入图像描述

最后,在您的 AppDelegate 中,您需要实现以下方法:

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    NSLog(@"App opened with url %@", url);
    return YES;
}

每当您的应用收到 PDF 时都会调用它。这些文件将进入一个名为“收件箱”的特殊文件夹,URL 将告诉您已提供的文件的名称。

编辑

这是我的 iPhone 的示例控制台输出:

2015-03-19 15:27:32.841 so 29147257[3951:1529409] App opened with url file:///private/var/mobile/Containers/Data/Application/A5723926-F869-49C0-A2AF-756795932B81/Documents/Inbox/first-1.pdf
于 2015-03-19T14:29:42.850 回答
1

这是在 iOS 8 及更高版本(以及 OS X 10.10 及更高版本)中实现的新功能。它被称为扩展。扩展允许应用离开他们的 Apple 沙箱并访问操作系统的其他部分,包括通知中心和共享表。苹果是这样说的:

从 iOS 8.0 和 OS X v10.10 开始,应用扩展允许您将自定义功能和内容扩展到应用之外,并在用户使用其他应用或系统时提供给用户。您创建一个应用程序扩展来启用特定任务;用户获得您的扩展程序后,他们可以使用它在各种上下文中执行该任务。例如,如果您提供了一个允许分享到您的社交分享网站的扩展程序,用户可以使用它在网上冲浪时发表评论。或者,如果您提供了一个显示当前运动成绩的扩展,用户可以将其放在通知中心,以便他们在打开“今日”视图时可以获得最新的成绩。您甚至可以创建一个扩展程序,提供用户可以用来代替 iOS 系统键盘的自定义键盘。

有几种不同类型的扩展程序,包括 Apple Watch 应用程序。您可以在 Apple 文档中查看所有这些类型。

要开始构建扩展,这里有一些资源:

于 2015-03-19T13:16:47.300 回答
0

您将需要在 info.plist 中使用 UTImportedTypeDeclarations

这个http://www.raywenderlich.com/1948/how-integrate-itunes-file-sharing-with-your-ios-app的一个很好的教程

于 2015-03-19T14:10:28.237 回答