我想在我的应用程序中有一个功能,用户可以通过我的应用程序的 iTunes URL 向朋友发送电子邮件。这怎么可能?
谢谢。
您可以创建更简单、更合乎逻辑的 App Store 链接,而不是您通常看到的冗长且令人困惑的 url。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: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 框架来执行此操作,而无需离开应用程序(使用 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:@"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 设备。然而,这不像其他方法那样可靠。在此处查看答案如何为苹果应用商店创建虚荣网址?
此代码根据应用名称自动生成应用商店链接,无需其他任何内容,拖放:
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 指向应用程序的链接——然后给自己发送一封电子邮件。我发现这是非常有用的。