我的下一个问题如下:我有一个通过 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];
我在项目目标的 Info 部分添加了 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;
}