itunes到本地化应用程序的符号链接

时间:2012-11-20 14:06:26

标签: ios hyperlink itunesconnect itunes-store

我使用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'一样工作吗?

3 个答案:

答案 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'。见图:enter image description here


要极其简洁:

[[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内。