iTunes 查找 API 在我的 APP 中返回旧数据

Posted

技术标签:

【中文标题】iTunes 查找 API 在我的 APP 中返回旧数据【英文标题】:iTunes lookup API return old data in my APP 【发布时间】:2017-04-05 09:11:32 【问题描述】:

我的 APP 通过比较 iTunes 查找 API 返回的本地版本和远程版本来检查更新。但是API在新版本发布后仍然返回旧版本。

https://itunes.apple.com/us/lookup?bundleId=com.xxx.xxxx

如果我通过浏览器请求此API返回新版本(4.9),但在APP中返回旧版本(4.8.1)。

有人帮忙吗?谢谢。

- (void)updateAppInfo


    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
    //first check iTunes
    NSString *iTunesServiceURL = [NSString stringWithFormat:@"https://itunes.apple.com/us/lookup"];
    iTunesServiceURL = [iTunesServiceURL stringByAppendingFormat:@"?bundleId=%@", [[NSBundle mainBundle] bundleIdentifier]];
    NSLog(@"iRate is checking %@ to retrieve the App Store details...", iTunesServiceURL);

    NSError *error = nil;
    NSURLResponse *response = nil;
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:iTunesServiceURL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSInteger statusCode = ((NSHTTPURLResponse *)response).statusCode;
    if (data && statusCode == 200)
    
        //in case error is garbage...
        error = nil;
        id json = nil;
        if ([NSJSONSerialization class])
        
            json = [[NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingOptions)0 error:&error][@"results"] lastObject];
        
        else
        
            //convert to string
            json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        

        if (!error)
        
            self.appStoreId = [self valueForKey:@"trackId" inJSON:json];
            self.latestVersion = [self valueForKey:@"version" inJSON:json];
            self.releaseNote = [self valueForKey:@"releaseNotes" inJSON:json];
        
    
    );

【问题讨论】:

我昨天发布了一个新版本,但在 AppStore 中仍然没有。也许您的新版本已在 iTunesConnect 上可供销售,但尚未在 AppStore 中提供? 数据反映在所有系统中可能需要一段时间,建议您等待一段时间。 @rckoenes nope,我可以在 AppStore 下载新版本???? 等一下,12小时太短了。 嗨!我遇到了完全相同的问题。你解决了吗? 【参考方案1】:

我也面临同样的问题,但在我的情况下,我使用的是 http(例如 http://itunes.apple.com/lookup?bundleId=com.xxx.xxxx),所以没有获得最新的应用程序版本。然后我将 http 替换为 https (https://itunes.apple.com/lookup?bundleId=com.xxx.xxxx) 之后它对我有用。

更新 - 我们的团队向苹果开发人员发送了邮件,询问为什么 https 有效而 http 无效,并得到了苹果团队的回复。他告诉“一般来说,更新的应用信息会延迟 24 小时从 App Store Connect 发布到公众。”

欲了解更多信息,请参阅他们的电子邮件回复-

【讨论】:

我也面临同样的问题。 https 解决问题了吗?【参考方案2】:

我现在也遇到了同样的问题。我与另一位开发人员交谈,他得出的结论是这可能是 CDN 问题。 (内容分发网络)

当我连接到我们的 wifi 时,响应已过时。 当我连接到我的 4G 数据时,响应会更新。

【讨论】:

【参考方案3】:

我遇到了同样的问题。它有两个步骤来解决这个问题。

我使用的是 http://itunes.apple.com/lookup?bundleId="YOUR BUNDLE ID" 而不是 https

第 1 步:请确保您使用的是 https 而不是 http,因为它不会为您提供更新的版本号。 首先我上传了我的应用,版本为 1.8.0,然后版本为 1.9.0,然后版本为 1.9.1。当我使用 http 时,它总是显示 1.8.0,即使应用商店中的应用程序版本为 1.9.1。所以,以后只需使用 https

第 2 步:上传最新版本后,请等待 24 小时,以便在 https://itunes.apple.com/lookup?bundleId="YOUR BUNDLE ID" 上获取最新版本。我得到的是 1.9.0 版本,即使该应用在 24 小时内以 1.9.1 版本上线。我等了 24 小时,然后它开始给我正确的版本,然后我能够通过版本检查来强制更新我的应用程序。

【讨论】:

【参考方案4】:

并非所有应用都可在所有国家/地区使用。在您的 URL 中,在美国商店中寻找它。删除 /us/ 并尝试。

更多详情:iTunes search API won't show existing app info

【讨论】:

【参考方案5】:

好的@Yunnosch 目前无法从此网址获取 JSON 格式的应用程序信息

https://itunes.apple.com/lookup?bundleId="您的捆绑包 ID"。

因此我们需要用这个来改变 URL

新 URL 将 https://itunes.apple.com/lookup?id="Your Bundle id"

这只是在评论中通知新的最新网址。

【讨论】:

请让您的帖子提供的额外见解更加明显,尤其是与 Syed Faizan Ahmed 的回答相比。

以上是关于iTunes 查找 API 在我的 APP 中返回旧数据的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 应用程序中使用 iTunes 连接查找 api

如何使用在我的客户的 iTunes Connect 中设置为 App Manager 角色的帐户将 iOS 构建上传到 App Store?

iTunes 查找 API 响应中的“版本”字段指的是啥?

如何在 App Store (iTunes) 中链接到我的应用程序?

是否可以使用 iTunes App Store API 获得任何应用的排名位置?

是否可以在 App Store Connect/iTunes Search API 中看到分阶段的应用发布?