Как я могу сделать ссылку на свое приложение в App Store (iTunes)? - PullRequest
27 голосов
/ 04 мая 2009

Я хочу, чтобы в моем приложении была функция, позволяющая пользователю отправить электронное письмо другу с URL-адресом iTunes для моего приложения. Как это возможно?

Спасибо.

Ответы [ 5 ]

47 голосов
/ 04 мая 2009

Вместо длинных и запутанных URL, которые вы обычно видите, вы можете создавать ссылки в App Store, которые намного проще и логичнее. В iTunes Store есть скрытый формат URL, который гораздо более логичен. В зависимости от того, на что вы ссылаетесь, вам просто нужно создать URL в одном из следующих форматов:

  1. Имя исполнителя или имя разработчика App Store: http://itunes.com/Artist_Or_Developer_Name
  2. Название альбома: http://itunes.com/Artist_Name/Album_Name
  3. Приложения: http://itunes.com/app/App_Name
  4. Фильмы: http://itunes.com/movie/Movie_Title
  5. ТВ: 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 вы можете делать что-то лучше, но я пока не могу об этом говорить.

4 голосов
/ 10 июля 2009

В 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 в теле и многое другое.

3 голосов
/ 11 февраля 2013

Теперь вы можете использовать appstore.com/APP_NAME для запуска приложения в iTunes. Это работает на рабочем столе и на устройствах iOS. Однако это не так надежно, как другие методы. Смотрите ответ здесь Как создать тщеславный URL для Apple AppStore?

1 голос
/ 07 марта 2012

Этот код автоматически создает ссылку на магазин приложений на основе имени приложения, больше ничего не требуется, 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);

Это дает вам ссылку, как http://itunes.com/app/angrybirds

0 голосов
/ 19 января 2012

Кстати, ссылку на приложение по его идентификатору можно найти, посетив Магазин приложений для своего приложения и нажав «Рассказать другу» - затем отправьте электронное письмо себе. Я нашел это очень информативным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...