我使用i-tunes应用内链接,例如:
NSString *app_link = @"samuraivszombiesdefense";
NSString *link = [@"itms-apps://itunes.com/apps/"stringByAppendingString:app_name];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:link]];
有人碰巧知道:这个'应用名称'是什么 - 在iTunes中创建的应用程序记录名称(禁止使用的符号除外)(您可以在iTunesConnect->'管理您的应用程序'屏幕上看到的内容)或'应用程序名称在iTunesConnect中编辑版本详细信息时,“来自'元数据和上传'的字段?
我的意思是,如果应用程序的元数据有多种语言,则每种语言的“应用程序名称”都不同。如果appname是英文应用程序名称,会像'itms-apps://itunes.com/apps/appname'一样工作吗?
答案 0 :(得分:1)
好的,这是我的解决方案。 我决定使用以下网址: http://itunes.apple.com/app/idXXXXXXXXX?mt=8,其中XXXXXXXXX - 我的应用的ID。 没有国家/地区前缀,所以我认为它将在全球范围内运作,不仅在美国或德国。 或者不是?
此类链接可能会导致多次重定向。所以为了避免它们,我已经使用了这样的代码(基于Apple文档的代码,效果非常好):
@interface iTunesOpener ()
{
NSURL *iTunesURL;
}
- (void)openAppLinkFromAppId:(NSString *) appid;
- (void)openReferralURL:(NSURL *)referralURL;
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
@end
@implementation iTunesOpener
- (void)openAppLinkFromAppId:(NSString *) appid
{
NSString *iTunesLink = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@?mt=8", appid];
NSURL* url = [NSURL URLWithString:iTunesLink];
[self openReferralURL: url];
}
// Process a LinkShare/TradeDoubler/DGM URL to something iPhone can handle
- (void)openReferralURL:(NSURL *)referralURL
{
NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:referralURL] delegate:self startImmediately:YES];
[con release];
}
// Save the most recent URL in case multiple redirects occur
// "iTunesURL" is an NSURL property in your class declaration
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response
{
iTunesURL = [response URL];
if( [iTunesURL.host hasSuffix:@"itunes.apple.com"])
{
[connection cancel];
[self connectionDidFinishLoading:connection];
return nil;
}
else
{
return request;
}
}
// No more redirects; use the last URL saved
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[[UIApplication sharedApplication] openURL:iTunesURL];
}
@end
答案 1 :(得分:0)
修改:如果您只为所有国家/地区使用相同的链接,则应用的链接将无效。因为不同国家的链接不同。例如,Facebook在中国的链接在'/ com'和'/ app'之间有'/ cn'。见图:
要极其简洁:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/appname"]];
如果您要向开发者发送所有应用,请使用
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/developername"]];
如果您要打开包含在网址中的公司名称的特定应用:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/developername/appname"]];
您可以参考此问题了解更多信息:How to link to apps on the app store
答案 2 :(得分:0)
我们发现的最佳解决方案是避免尝试预测网址,并创建自定义网址重定向,例如http://mycompany.com/redirects/my-app-itunes
,您可以更新以在知道后重定向到正确的网址。
您必须使用的确切字符串很难正确,特别是当您有特殊字符,空格等时。规则甚至可能会改变,或者Apple可能会决定更改某些内容。最好将URL保持在您的控制之下。
如果你真的想走这条路,请参阅this documentation from Apple。它详细说明了将应用程序名称转换为简短友好的iTunes URL所需的操作:
- 删除所有空格
- 将所有字符转换为小写
- 删除所有版权(©),商标(™)和注册商标(®)符号
- 用“和”
替换&符号(“&”)- 删除大多数标点符号(请参阅清单2中的集合)
- 将重音和其他“装饰”字符(ü,å等)替换为其元素字符(u,a等)
- 保留所有其他字符。
应用程序名称应为iTunes Connect应用程序列表中显示的名称(非本地化)。最棒的是测试它。
最后,来自Apple:
这些itunes.com网址是为了方便而提供的,并且不是 保证链接到特定的应用程序或公司。务必 在任何营销或其他公众使用它们之前测试您的URL 材料。如果存在命名冲突,请继续使用该标准 itunes.apple.com网址,包含唯一的数字标识符 在URL内。