Ios 使用UIActivityViewController提供不同格式的数据

Ios 使用UIActivityViewController提供不同格式的数据,ios,objective-c,email,uiactivityviewcontroller,airdrop,Ios,Objective C,Email,Uiactivityviewcontroller,Airdrop,在我的应用程序中,我想分享购物清单。比方说,我想以两种不同的方式分享购物清单: 通过带有模式url的空投,将在另一台设备上启动我的应用程序,接收应用程序将共享项目添加到其购物列表中 通过电子邮件,发送一封电子邮件,将购物清单上的项目作为HTML文档以表格格式发送 因此,根据活动类型是空投还是电子邮件,基本上有两种不同的字符串可供共享。下面的代码不起作用,因为它始终是已发送的架构URL,即使对于电子邮件: url = [@"myapp://shoppinglist?apple=12&ora

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

  • 通过带有
    模式url的
    空投
    ,将在另一台设备上启动我的应用程序,接收应用程序将共享项目添加到其购物列表中
  • 通过
    电子邮件
    ,发送一封
    电子邮件
    ,将购物清单上的项目作为
    HTML文档
    以表格格式发送
  • 因此,根据活动类型是
    空投
    还是
    电子邮件
    ,基本上有两种不同的字符串可供共享。下面的代码不起作用,因为它始终是已发送的
    架构URL
    ,即使对于
    电子邮件

    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
    用于此目的,还是具有执行此操作的灵活性?

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

    因此,在空投的情况下,只有URL的项目源将返回非nil值。您可以查看以获得一些如何实现UIActivityItemSource的示例