Как я могу разместить ссылку на свое приложение в App Store (iTunes)?
Вопрос
Я хочу иметь в своем приложении функцию, позволяющую пользователю отправлять электронное письмо другу с URL-адресом iTunes моего приложения.Как это возможно?
Спасибо.
Решение
Вместо длинных и запутанных URL-адресов, которые вы обычно видите, вы можете создавать ссылки в App Store, которые намного проще и логичнее.В iTunes Store есть скрытый формат URL, который гораздо более логичный.В зависимости от того, на что вы ссылаетесь, вам просто нужно создать URL-адрес в одном из этих форматов:
- Имя исполнителя или имя разработчика App Store: http://itunes.com/Имя_художника_или_разработчика
- Название альбома: http://itunes.com/Имя_исполнителя/Название_альбома
- Программы: http://itunes.com/app/имя_приложения
- Кино: http://itunes.com/movie/Movie_Title
- ТВ: http://itunes.com/tv/Show_Title
Просто включите URL-адрес этого формата в тело создаваемого вами электронного письма.
(Обратите внимание, что пробелы могут вызвать проблемы, но я обнаружил, что их полное отсутствие помогло мне - http://itunes.com/app/FrootGroove перенаправляет в приложение под названием «Froot Groove».)
(Также обратите внимание, что если это не работает для вас, создатель ссылок iTunes здесь)
Ваш код будет примерно таким (выделен из моего, анонимизирован и не проверен)
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
В iPhone 3.0 можно добиться большего, но я пока не могу об этом говорить.
Другие советы
В OS 3.0 вы можете использовать платформу MessageUI, чтобы сделать это, не выходя из приложения (используя код Джейн в качестве запасного варианта для устройств до 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];
}
Обратите внимание, что ваш класс должен принять MFMailComposeViewControllerDelegate
протокол.Вы также можете включать вложения, использовать HTML в теле и многое другое.
Теперь вы можете использовать appstore.com/APP_NAME для запуска приложения в iTunes.Это работает на настольном компьютере и на устройствах iOS.Однако это не так надежно, как другие методы.Смотрите ответ здесь Как создать личный URL-адрес для Apple AppStore?
Этот код автоматически генерирует ссылку на магазин приложений судя по названию приложения, больше ничего не требуется, перетаскивания:
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);
Он дает вам ссылку типа http://itunes.com/app/angrybirds
Кстати, ссылку на приложение по его ID можно найти, зайдя в Apps Store вашего приложения и нажав на кнопку «Рассказать другу» -- после чего отправить письмо самому себе.Я нашел это очень информативным.