0

在我的应用程序中,我想分享购物清单。比方说,我想以两种不同的方式分享购物清单:

  1. 通过AirDropa schema url,这将在另一台设备上打开我的应用程序,并且接收应用程序将共享项目添加到其购物清单中。
  2. 通过email,它将email购物清单上的项目HTML document以表格格式发送。

因此,基本上有两个不同的字符串可以共享,具体取决于活动类型是AirDrop还是email。下面的代码不起作用,因为它总是schema URL被发送,即使是email

url = [@"myapp://shoppinglist?apple=12&orange=5" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[url] applicationActivities:nil];
[self presentViewController:controller animated:NO completion:nil]; 

我挖了一点,但找不到如何根据共享方法发送不同的内容。

我的问题是如何做我在这里描述的UIActivityViewController?或者它甚至是可行的——是UIActivityViewController为此目的还是有这样做的灵活性?

4

1 回答 1

1

您希望创建并共享两个符合UIActivityItemSource的对象,其中一个返回 HTML,另一个返回 URL。然后,当调用请求该项目的委托回调时,您检查选择了哪种活动类型(Facebook、邮件、AirDrop 等),如果该项目不适用,则其中一个或另一个返回 nil。

因此,在 AirDrop 的情况下,只有 URL 的项目源将返回非零值。你可以看一下空投示例代码来获取一些如何实现 UIActivityItemSource 的示例

于 2014-10-09T16:02:28.850 回答