2012-11-20 13 views
1

我使用iTunes应用程序内像链接:iTunes的符号链接到本地​​化的应用

NSString *app_link = @"samuraivszombiesdefense"; 
NSString *link = [@"itms-apps://itunes.com/apps/"stringByAppendingString:app_name]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:link]]; 

难道有人碰巧知道:这是什么“应用程序名称” - 应用程序记录的名称(除禁止符号)在iTunesConnect中编辑版本详细信息时,是否在iTunes中创建(您可以在iTunesConnect上看到的内容 - >'管理您的应用'屏幕)或'元数据和上传'中的'应用名称'字段?

我的意思是,如果应用程序的元数据有很多种语言,则每种语言的“应用程序名称”是不同的。如果appname是英文应用程序名称,就会像'itms-apps://itunes.com/apps/appname'一样链接?

回答

0

编辑:如果您只对所有国家使用相同的链接,应用程序的链接将不起作用。因为不同国家的链接不同。例如Facebook在中国的链接在'/ com'和'/ app'之间有'/ cn'。看到图片:enter image description here


要extreamly简洁:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/appname"]]; 

如果您要发送到所有的应用程序的开发,使用

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/developername"]]; 

如果你想打开您的公司名称的特定应用程序包含在URL:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/developername/appname"]]; 

而且你可以参考这个问题更多:How to link to apps on the app store

+0

你看了我的问题,@sunkehappy?你刚刚从我之前读过的另一个问题写下了答案。我问过这个'app name'是什么 - 应用程序记录的名称在连接或从元数据'应用程序名称'? – Tertium

+0

我编辑了我的答案,你可以检查你是否需要这个。 – sunkehappy

+0

我明白了,@sunkenhappy,但是如果我不使用'我们'或'de',只是itms-apps://itunes.com/apps/samuraivszombiesdefense,它不会在所有国家都有效吗? – Tertium

0

我们已经找到了最好的解决办法是避免试图预测网址,并创建一个自定义URL重定向像http://mycompany.com/redirects/my-app-itunes您可以更新重定向到正确的URL一旦你知道它。

您必须使用的确切字符串是难以得到的权利,尤其是当你有特殊字符,空格等规则甚至可能会改变,或者苹果可能决定改变一些东西。最好将URL保存在您的控制之下。

如果你真的想要走这条路,看this documentation from Apple。它详细正是你需要做的的应用程序名称转换成短友好iTunes网址是什么:

  • 移除所有的空格
  • 转换所有字符为小写
  • 删除所有的版权(©) ,商标(™)和注册商标(®)符号
  • 替换符号( “&”) “和”
  • 删除大部分标点符号(如清单2所示的设置)
  • 与他们的要素字符(U,A等)
  • 保留所有其他字符,是更换重音符号和其他“装饰”字符(U,A等)。

,因为它出现在iTunes Connect的应用程序列表中的应用程序名称应该是域名(非本地化)。但最好的是测试这个。

最后,从苹果:

这些itunes.com网址提供方便,并不 保证链接到一个特定的应用或公司。在将 材料用于任何市场营销或其他公开 之前,请务必测试您的URL。如果存在命名冲突,请继续使用itunes.apple.com网址的标准 网址,该网址在网址中包含唯一的数字标识 。

+0

很好@MikeWeller,但是当你使用重定向什么URL你指向你的应用程序?我的意思是,如果每个国家都有不同的链接,除了本地美国市场外,几乎不可能链接到我自己的应用程序? – Tertium

+1

如果每个市场都有不同的应用程序,每个应用程序都有自己的链接,那么您必须以某种方式将用户的区域设置包含在URL中,然后根据该应用程序重定向到相应的应用程序。您的应用是链接到自己,还是链接到商店中的其他应用? –

+0

这是指向完整版本的精简版本。我已经添加了自己的答案(关于使用链接,如http://itunes.apple.com/app/idXXXXXXXXX?mt=8)。看起来它比任何国家的符号链接都更可预测。现在它起作用了(我认为)。你怎么看? – Tertium

1

好的,这是我的解决方案。 我决定使用如下网址: http://itunes.apple.com/app/idXXXXXXXXX?mt=8,其中XXXXXXXXX - 我的应用的ID。 没有国家的前缀,所以我想它可以在全球范围内工作,不仅在美国或德国。 还是不是?

这种链接可能会导致多个重定向。因此,为了避免他们我已经用这样的代码(基于苹果文档的代码和工作得很好):

@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