AirDrop Sharing - пользовательская схема URL или URL веб-сайта

Моя следующая проблема заключается в следующем: у меня есть приложение, которое разделяет через 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 в разделе Info цели проекта, и обмен через AirDrop работает просто отлично. С другой стороны, если на другом устройстве нет приложения, отображается предупреждение по умолчанию, в котором говорится, что "устройство x пытается поделиться чем-то в приложении, которого у вас нет, хотите пойти из магазина приложений?". Я хотел бы, чтобы, если на другом устройстве не было приложения, отправлять другой URL, который может открыть браузер.

Если я пытаюсь добавить NSURL* по умолчанию среди ActivityItems, я получаю сообщение об ошибке, в котором говорится, что "устройство 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 ответ

К сожалению, вы не можете выполнить то, что вы пытаетесь сделать с помощью текущих API. Если вы считаете, что это упущение, вы должны сообщить об ошибке в Apple, запрашивая эту возможность.

Ошибка "устройство х не может получать такие элементы" отображается, когда приложение пытается поделиться набором элементов. Например, это предупреждение об ошибке будет отображаться, когда приложение пытается совместно использовать документ PDF и страницы одновременно. То же самое касается схем со смешанными URL-адресами, что и происходит в вашем случае ( http://some-url.com/ и appName://some-custom-url).

Другие вопросы по тегам