Pergunta

Eu quero ter uma característica em meu aplicativo onde o usuário pode enviar um e-mail a um amigo com o iTunes URL ao meu pedido. Como é possível?

Graças.

Foi útil?

Solução

Ao invés das longas e confusas urls que você costuma ver, você pode criar links App Store que são muito mais simples e lógico. A iTunes Store tem um formato de URL escondido que é muito mais lógico. Dependendo do que você está ligando, você só precisa construir um URL em um destes formatos:

  1. nome do artista ou do desenvolvedor App Store nome: http://itunes.com/Artist_Or_Developer_Name
  2. nome
  3. Album: http://itunes.com/Artist_Name/Album_Name
  4. Apps: http://itunes.com/app/App_Name
  5. Filmes: http://itunes.com/movie/Movie_Title
  6. TV: http://itunes.com/tv/Show_Title

Apenas incluir uma url deste formato no corpo do e-mail que você cria.

(Note que os espaços podem causar problemas, mas eu achei que omitindo-los totalmente trabalhou para mim - http: // itunes .com / app / FrootGroove redireciona para o aplicativo chamado "Froot sulco".)

(Observe também que, se isso não funcionar para você, o iTunes ligar fabricante é aqui )

O seu código será algo como isto (extraído da mina, anónima e não testado)

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

Você pode fazer coisas melhores no iPhone 3.0, mas não posso falar sobre aqueles ainda.

Outras dicas

Em OS 3.0 você pode usar a estrutura MessageUI de fazer isso sem sair do aplicativo (usando o código de Jane como o fallback para pré-3.0 dispositivos):

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

Note que sua classe deve adotar o protocolo MFMailComposeViewControllerDelegate. Você também pode incluir anexos, uso de HTML no corpo e muito mais.

Você pode agora usar appstore.com/APP_NAME para lançar um app no ??iTunes. Isso funciona no desktop e em dispositivos iOS. Esta não é tão confiável como outros métodos no entanto. Ver resposta aqui Como criar vaidade url para a Apple AppStore?

Este código gera o link App Store automaticamente com base no nome do aplicativo, nada mais é necessário, drag & drop :

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

Ela dá-lhe um link como http://itunes.com/app/angrybirds

A propósito, o link para o aplicativo pelo seu ID podem ser encontradas visitando o Apps Store para seu aplicativo e clicando no botão "Indique a um amigo" - em seguida, enviar um e-mail para si mesmo. Eu encontrei este para ser muito informativa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top