por mac funciona compartir como activar ios iphone objective-c airdrop

mac - Personaliza la descripción de la alerta de AirDrop en iOS



como activar airdrop en iphone 7 (4)

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 mensaje:

¿Es posible cambiar el texto de la URL encuentra después de que ''X quisiera compartir'' a algo más fácil de usar como ''X quisiera compartir una lista contigo''? ¡Gracias por adelantado!

EDITAR

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

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; }


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

Lo que tengo originalmente es la imagen de la izquierda. Estoy compartiendo datos personalizados a través de AirDrop y miré el título generado por UIActivityController de forma predeterminada " data-3A4F9D ... ", orz. Lo que quiero lograr es un título más descriptivo para que sea más legible para el destinatario (imagen de la derecha). Parece que es extremadamente similar a su pregunta (aunque estoy compartiendo NSData mientras usted comparte NSURL .

Esto es lo que hago, 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 aún tiene este problema, siéntase libre de intentarlo y hágame saber cómo funciona para usted.



Necesitas seguir el tutorial HERE . Después del encabezado "Una mirada rápida a UIActivityViewController", creo que eso es exactamente lo que está buscando.

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


Tendrá que implementar una clase conforme al protocolo UIActivityItemSource. Aquí hay un ejemplo muy bueno: https://developer.apple.com/LIBRARY/IOS/samplecode/sc2273/Introduction/Intro.html . Eche un vistazo al APLCustomURLContainer en particular. Después de implementar su clase de contenedor de URL, puede agregarla a los elementos de actividad junto con una cadena (que será su mensaje personalizado)

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

EDITAR:

Al principio no tenía dos teléfonos para probar eso, así que solo probé para Facebook y Twitter donde está funcionando correctamente, pero para AirDrop puedo confirmar ahora (después de algunas pruebas) que siempre está usando la cadena relativa de NSURL e incluso si anula el método de NSURL, el uso compartido no funcionará, por lo que para AirDrop (las otras actividades como FB están bien) no es posible cambiar ese mensaje con el SDK actual.