2013-11-26 1 views
0

Я использую Airdrop для отправки настраиваемого URL-адреса, чтобы открыть мое приложение на другом устройстве с соответствующей информацией.Airdrop: создание настраиваемой схемы URL-адресов будет менее уродливым для получателя

Он отлично работает, но на приемном устройстве он выглядит очень уродливо, потому что он получает сообщение, которое цитирует URL как отправляемую вещь, например schemename://123456. Есть ли способ сделать сообщение более приятным или заставить принимающее устройство сообщить вам, какое приложение оно хочет открыть, а не показывать критический URL?

ответ

2

сделать пользовательский объект, который подтверждает с UIActivityItemSource

@interface LAAirDropCustomUrl : NSObject <UIActivityItemSource> 

@property (strong, nonatomic) NSURL *url; 
@property (strong, nonatomic) UIImage *productImage; 
- (id)initWithUrl:(NSURL *)url; 


@end 



    @implementation LAAirDropCustomUrl 

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

    #pragma mark - UIActivityItemSource 

    - (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { 
     //Because the URL is already set it can be the placeholder. The API will use this to determine that an object of class type NSURL will be sent. 
     return self.url; 
    } 

    - (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { 
     //Return the URL being used. This URL has a custom scheme (see ReadMe.txt and Info.plist for more information about registering a custom URL scheme). 
     if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
      return nil; 
     } else { 
      if ([activityType isEqualToString:UIActivityTypeAirDrop]) { 
       return self.url; 
      } 
     } 
     return nil; 
    } 

    - (UIImage *)activityViewController:(UIActivityViewController *)activityViewController thumbnailImageForActivityType:(NSString *)activityType suggestedSize:(CGSize)size 
    { 
     //Add image to improve the look of the alert received on the other side, make sure it is scaled to the suggested size. 

     return self.productImage; 
    } 
+0

Блестяще, спасибо, я должен был более внимательно изучить протокол источника активности! – occulus

+0

Нет проблем: D, если вы хотите, вы можете принять ответ –

+0

Просто дождавшись, чтобы увидеть, есть ли у кого-нибудь еще какие-либо входные данные. – occulus

0

Это инженерный пост Eventbrite описывает потенциальный путь достижения вашей предназначенной задачи.

Существует образец проект прилагается к сообщению https://engineering.eventbrite.com/setting-the-title-of-airdrop-shares-under-ios-7/

Краткого резюме на должность:

Сохранить URL в файле с пользовательским расширением (типом файла), который может быть открыт только вашим приложением. Получатель Airdrop откроет файл в вашем приложении, если он установлен, или вам будет предложено установить приложение из AppStore.

 Смежные вопросы

  • Нет связанных вопросов^_^