Pregunta

Quiero tener una función en mi aplicación donde el usuario pueda enviar un correo electrónico a un amigo con la URL de iTunes a mi aplicación. ¿Cómo es posible?

Gracias.

¿Fue útil?

Solución

En lugar de las urls largas y confusas que usualmente ves, puedes crear enlaces de App Store que son mucho más simples y lógicos. La tienda iTunes Store tiene un formato de URL oculto que & # 8217; s es mucho más lógico. Dependiendo de a qué estés enlazando, solo necesitas crear una URL en uno de estos formatos:

  1. Nombre del artista o del desarrollador de la App Store & # 8217; nombre: http://itunes.com/Artist_Or_Developer_Name
  2. Nombre del álbum: http://itunes.com/Artist_Name/Album_Name
  3. Aplicaciones: http://itunes.com/app/App_Name
  4. Películas: http://itunes.com/movie/Movie_Title
  5. TV: http://itunes.com/tv/Show_Title

Solo incluye una URL de este formato en el cuerpo del correo electrónico que creas.

(Tenga en cuenta que los espacios pueden causar problemas, pero descubrí que omitirlos me funcionó por completo - http: // itunes .com / app / FrootGroove redirige a la aplicación llamada "Froot Groove " ;.)

(También tenga en cuenta que si esto no funciona, el creador de enlaces de iTunes es here )

Su código será algo como esto (extraído del mío, anónimo y no probado)

NSString* body = [NSString stringWithFormat:@"Get my app here - %@.\n",myUrl];

#if __IPHONE_OS_VERSION_MIN_REQUIRED <= __IPHONE_2_2
[NSThread sleepForTimeInterval:1.0];
NSString* crlfBody = [body stringByReplacingOccurrencesOfString:@"\n" withString:@"\r\n"];
NSString* escapedBody = [(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  (CFStringRef)crlfBody, NULL,  CFSTR("?=&+"), kCFStringEncodingUTF8) autorelease];

NSString *mailtoPrefix = [@"mailto:xxx@wibble.com?subject=Get my app&body=" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

// Finally, combine to create the fully escaped URL string
NSString *mailtoStr = [mailtoPrefix stringByAppendingString:escapedBody];

// And let the application open the merged URL
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailtoStr]];
#endif

Puedes hacer mejores cosas en iPhone 3.0, pero no puedo hablar de eso todavía.

Otros consejos

En OS 3.0, puedes usar el marco de MessageUI para hacer esto sin salir de la aplicación (usando el código de Jane como respaldo para dispositivos pre-3.0):

- (void)sendEmail
{
    NSString* body = [NSString stringWithFormat:@"Get my app here - %@.\n",myUrl];

#if __IPHONE_OS_VERSION_MIN_REQUIRED <= __IPHONE_2_2
    Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
    if (mailClass != nil && [mailClass canSendMail])
    {
        MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
        picker.mailComposeDelegate = self;
        picker.subject = @"Get my app";
        [picker setToRecipients:[NSArray arrayWithObject:@"xxx@wibble.com"];
        [picker setMessageBody:body isHTML:NO];

        [self presentModalViewController:picker animated:NO];
        [picker release];
    } else {
        [NSThread sleepForTimeInterval:1.0];
        NSString* crlfBody = [body stringByReplacingOccurrencesOfString:@"\n" withString:@"\r\n"];
        NSString* escapedBody = [(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  (CFStringRef)crlfBody, NULL,  CFSTR("?=&+"), kCFStringEncodingUTF8) autorelease];

        NSString *mailtoPrefix = [@"mailto:xxx@wibble.com?subject=Get my app&body=" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        // Finally, combine to create the fully escaped URL string
        NSString *mailtoStr = [mailtoPrefix stringByAppendingString:escapedBody];

        // And let the application open the merged URL
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailtoStr]];
    }
#endif
}

#pragma mark -
#pragma mark Mail Composer Delegate
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{
    if (result == MFMailComposeResultFailed) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[error localizedDescription] message:[error localizedFailureReason] delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"OK") otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
    [self dismissModalViewControllerAnimated:YES];
}

Tenga en cuenta que su clase debe adoptar el protocolo MFMailComposeViewControllerDelegate . También puede incluir archivos adjuntos, usar HTML en el cuerpo y más.

Ahora puedes usar appstore.com/APP_NAME para iniciar una aplicación en iTunes. Esto funciona en el escritorio y en dispositivos iOS. Sin embargo, esto no es tan confiable como otros métodos. Vea la respuesta aquí ¿Cómo crear una URL de vanidad para Apple AppStore?

Este código genera el enlace de la tienda de aplicaciones automáticamente en función del nombre de la aplicación, no se requiere nada más, arrastrar & amp; soltar :

NSCharacterSet *trimSet = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789"] invertedSet];    
NSArray *trimmedAppname = [[NSString stringWithString:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]] componentsSeparatedByCharactersInSet:trimSet];
NSString *appStoreLink = @"http://itunes.com/app/"; 
for (NSString *part in trimmedAppname) appStoreLink = [NSString stringWithFormat:@"%@%@",appStoreLink,part];
NSLog(@"App store URL:%@",appStoreLink);

Le proporciona un enlace como http://itunes.com/app/angrybirds

Por cierto, el enlace a la aplicación por su ID se puede encontrar visitando la tienda de aplicaciones para su aplicación y haciendo clic en " Tell A Friend " - entonces envíate un correo electrónico a ti mismo. He encontrado que esto es muy informativo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top