Personaliza la descripción de la alerta de AirDrop en IOS

Tengo el siguiente código para enviar una URL través de AirDrop :

 NSString* selfUrlScheme = [[[[[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleURLTypes"] objectAtIndex:0] valueForKey:@"CFBundleURLSchemes"] objectAtIndex:0]; NSURL* schemeURL = [NSURL URLWithString: [NSString stringWithFormat: @"addList:%@,%@", self.list.uniqueID, selfUrlScheme]]; NSArray *objectsToShare = @[schemeURL]; controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil]; // Exclude all activities except AirDrop NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToWeibo, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo]; controller.excludedActivityTypes = excludedActivities; [self presentViewController:controller animated:YES completion:nil]; 

El destinatario recibe el siguiente post:

introduzca la descripción de la imagen aquí

¿Es posible cambiar el text de la URL encontrada después de que 'X quisiera compartir' algo más amigable para el usuario como 'X quisiera compartir una list con usted'? ¡Gracias por adelantado!

EDITAR

Ahora tengo esto pero todavía produjo el mismo resultado arriba:

 AirDropCustomURL *container = [[AirDropCustomURL alloc] initWithUrl:schemeURL]; NSString *message = @"a list"; controller = [[UIActivityViewController alloc] initWithActivityItems:@[message, container] applicationActivities:nil]; @interface AirDropCustomURL : NSObject <UIActivityItemSource> @property (strong, nonatomic) NSURL *url; @property (strong, nonatomic) UIImage *productImage; - (id)initWithUrl:(NSURL *)url; @implementation AirDropCustomURL - (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; } 

Tendrá que implementar una class conforme al protocolo UIActivityItemSource. Hay un muy buen ejemplo aquí: https://developer.apple.com/LIBRARY/IOS/samplecode/sc2273/Introduction/Intro.html . Echa un vistazo a APLCustomURLContainer en particular. Después de implementar la class de contenedor de URL, puede agregarlo a los elementos de actividad junto con una cadena (que será su post personalizado)

 MyURLContainer *container = [[MyURLContainer alloc] initWithURL:yourURL]; NSString *message = @"Your message"; UIActivityViewController activityController = [[UIActivityViewController alloc] initWithActivityItems:@[message, container] applicationActivities:nil]; 

EDITAR:

No tuve dos teléfonos para probarlo al principio, así que probé solo para Facebook y Twitter donde está funcionando correctamente, pero para AirDrop puedo confirmar ahora (después de algunas testings) que está siempre usando el relativoString de NSURL e incluso si usted anula ese método de NSURL, el intercambio no funcionará, así que para AirDrop (las otras actividades, como FB, están bien), no es posible cambiar ese post con el SDK actual.

Necesitas seguir el tutorial AQUÍ . Después del título "Una mirada rápida a UIActivityViewController", creo que eso es exactamente lo que estás buscando.

 UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil]; [self presentViewController:controller animated:YES completion:nil]; 

Me parece que está usando la description de la URL . Intentaría subclassar NSURL y anular el método de description para devolver algo así como @"a list" . No lo intenté, pero parece que podría funcionar …

EDIT: Encontré esta pregunta que parece ser la misma que la tuya y tiene una respuesta aceptada: Airdrop: hacer que un esquema de URL personalizado sea less feo para el destinatario

Esta pregunta ha sido publicada hace mucho time. Probé la respuesta de @ Ivan, así como otras respuestas en la publicación, sin embargo, ¡simplemente no funcionan!

Lo que originalmente tengo es la image de la izquierda. Estoy compartiendo datos personalizados a través de AirDrop y miré el título que genera UIActivityController de forma pnetworkingeterminada " data-3A4F9D … ", orz. Lo que quiero lograr es un título más descriptivo para que sea más legible para el destinatario (image a la derecha). Parece que es muy similar a tu pregunta (aunque estoy compartiendo NSData mientras estás compartiendo NSURL .

Esto es lo que hago, lo que funciona bastante bien: implementar el siguiente protocolo UIActivityItemSource dentro de mi UIActivityItemProvider .

 - (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType { // This returning string is added to the email title return NSLocalizedString(@"CustomTitle", nil); } 

Si todavía tiene este problema, no dude en probarlo y déjeme saber cómo funciona para usted.