Я хочу иметь функцию в своем приложении, где пользователь может отправить электронное письмо другу с URL-адресом iTunes в мое приложение. Как это возможно?
Спасибо.
Я хочу иметь функцию в своем приложении, где пользователь может отправить электронное письмо другу с URL-адресом iTunes в мое приложение. Как это возможно?
Спасибо.
Вместо длинных и запутанных URL-адресов, которые вы обычно видите, вы можете создавать ссылки в App Store, которые намного проще и логичнее. У iTunes Store есть скрытый URL-адрес, который намного логичнее. В зависимости от того, с чем вы ссылаетесь, вам просто нужно создать URL-адрес в одном из следующих форматов:
Просто укажите 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:[email protected]?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 для этого, не выходя из приложения (используя код Jane в качестве резервного для устройств до 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:@"[email protected]"];
[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:[email protected]?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. Однако это не так надежно, как другие методы. См. Ответ здесь Как создать тщеславие для яблочного 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
Кстати, ссылку на приложение по его идентификатору можно найти, посетив приложение "Магазин приложений" для вашего приложения и нажав "Расскажи другу", а затем отправьте электронное письмо самому себе. Я нашел это очень информативным.