AirDrop共享 - 自定义URL方案或网站URL

时间:2013-11-05 16:42:57

标签: ios share custom-url airdrop

我的下一个问题如下:我有一个通过AirDrop共享自定义URL方案的应用程序:

    NSMutableString *mutableString = [NSMutableString stringWithString:@"appName://"];
    [mutableString appendString:contentProduct.url];
    NSURL *airDropUrl = [[NSURL alloc] initWithString:mutableString];
    LAAirDropCustomUrl *customUrlSCHEMA = [[LAAirDropCustomUrl alloc] initWithUrl:airDropUrl];
    NSArray *activityItems = [NSArray arrayWithObjects:customUrlSCHEMA, nil];
    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems
                                                                                     applicationActivities:nil];

我在项目目标的“信息”部分添加了URL方案,通过AirDrop共享工作正常。另一方面,如果其他设备没有应用程序,则会显示默认警报,指出“设备x正试图在您没有的应用程序上共享smth,想从appstore获取?”。我想,如果其他设备没有应用程序,则发送浏览器可以打开的其他URL。

如果我试图在activityItems中添加默认的NSURL *,我收到一条错误,说“设备x无法接收这些项目”

    NSURL *airDropUrl = [[NSURL alloc] initWithString:mutableString];        
    NSArray *activityItems = [NSArray arrayWithObjects:airDropUrl,customUrlSCHEMA , nil];

LAAirDropCustomUrl实现是:

- (id)initWithUrl:(NSURL *)url {
     if (self = [super init]) {
         _url = url;
     }
     return self;
 }

 - (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
     return self.url;
 }

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

     if ([activityType isEqualToString:UIActivityTypeAirDrop]) {
         return self.url;
     }
     return  nil;
  }

1 个答案:

答案 0 :(得分:0)

遗憾的是,您无法使用当前的API完成此处尝试的操作。如果您认为这是遗漏,您应file a bug与Apple请求此功能。

当应用尝试共享项目混合时,会显示错误“设备x无法接收这些项目”。例如,当应用程序尝试同时共享PDF和Pages文档时,将显示此错误警报。混合网址方案也是如此,这就是您的情况(http://some-url.com和appName:// some-custom-url)。