1

我使用 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”这样的链接会起作用吗?

4

3 回答 3

1

好的,这是我的解决方案。我决定使用如下 URL: 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
于 2012-11-20T20:52:46.750 回答
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"]];

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

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

您可以参考这个问题了解更多信息:如何链接到应用商店中的应用

于 2012-11-20T14:14:02.860 回答
0

我们找到的最佳解决方案是避免尝试预测 URL,并创建一个自定义 URL 重定向http://mycompany.com/redirects/my-app-itunes,您可以在知道它后更新它以重定向到正确的 URL。

你必须使用的确切字符串很难正确,尤其是当你有特殊字符、空格等时。规则甚至可能会改变,或者 Apple 可能会决定改变一些东西。最好将 URL 置于您的控制之下。

如果您真的想走这条路,请参阅Apple 的此文档。它详细说明了将应用程序名称转换为简短友好的 iTunes URL 所需的操作:

  • 删除所有空格
  • 将所有字符转换为小写
  • 删除所有版权 (©)、商标 (™) 和注册商标 (®) 符号
  • 用“and”替换和号(“&”)
  • 删除大部分标点符号(参见清单 2 的集合)
  • 用它们的基本字符(u、a 等)替换重音字符和其他“装饰”字符(ü、å 等)
  • 保持所有其他字符不变。

应用程序名称应该是出现在 iTunes Connect 应用程序列表中的名称(非本地化)。最好的办法是对此进行测试。

最后,来自苹果:

这些 itunes.com URL 是为了方便而提供的,并不保证链接到特定的应用程序或公司。在任何营销或其他公共材料中使用它们之前,请务必测试您的 URL。如果存在命名冲突,请继续使用标准 itunes.apple.com URL,其中包含 URL 中的唯一数字标识符。

于 2012-11-20T15:43:28.597 回答