Como posso ligar para o meu aplicativo na App Store (iTunes)?
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.
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:
- nome do artista ou do desenvolvedor App Store nome: http://itunes.com/Artist_Or_Developer_Name nome
- Album: http://itunes.com/Artist_Name/Album_Name
- Apps: http://itunes.com/app/App_Name
- Filmes: http://itunes.com/movie/Movie_Title
- 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.