zoukankan      html  css  js  c++  java
  • [Cocoa]如何向Appstore查询已发布APP的信息?

    如何向Appstore查询已发布APP的信息?

    罗朝辉 (http://www.cnblogs.com/kesalin/)

    本文遵循“署名-非商业用途-保持一致”创作公用协议
     

    如果我们需要实现版本的 app 自动更新,那么我们需要获取当前运行程序的版本信息和 appstore 里发布的最新版本信息。

    当前运行程序的版本信息,可以在 mainBundle 里面获取:

    NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
    NSString *currentVersion = [infoDict objectForKey:@"CFBundleVersion"];

    而 appstore 里发布的最新版本信息获取稍微复杂一些,有两种方案,思路都是一样的:

    其一:在某个服务器上存储最新发布的版本信息,需要的时候向该服务器查询;

    其二:在需要的时候向 appstore 查询;

    在这里我来介绍第二种方法:向 appstore 查询应用程序信息,包括作者,版本,app 介绍页面地址等信息。

    英文好的同学可以参考 apple 的文档:www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html

    具体步骤如下:

    1,用 POST 方式发送请求:

    http://itunes.apple.com/search?term=你的应用程序名称&entity=software

    更加精准的做法是根据 app 的 id 来查找:

    http://itunes.apple.com/lookup?id=你的应用程序的ID

    2,从获得的 response 数据中解析需要的数据。因为从 appstore 查询得到的信息是 JSON 格式的,所以需要经过解析。解析之后得到的原始数据就是如下这个样子的:

    {
    resultCount = 1;
    results = (
    {
    artistId = 301724683;
    artistName = Citibank;
    artistViewUrl = "http://itunes.apple.com/us/artist/citibank/id301724683?uo=4";
    artworkUrl100 = "http://a5.mzstatic.com/us/r1000/117/Purple/a1/85/a9/mzl.hvwnfdkw.png";
    artworkUrl512 = "http://a5.mzstatic.com/us/r1000/117/Purple/a1/85/a9/mzl.hvwnfdkw.png";
    artworkUrl60 = "http://a2.mzstatic.com/us/r1000/099/Purple/67/86/7e/mzi.utfdvrgy.png";
    averageUserRating = "3.5";
    averageUserRatingForCurrentVersion = 5;
    contentAdvisoryRating = "4+";
    currency = USD;
    description = "Description of you app.";
    features = (
    iosUniversal
    );
    fileSizeBytes = 4141195;
    genreIds = (
    6015
    );
    genres = (
    Finance
    );
    ipadScreenshotUrls = (
    "http://a1.mzstatic.com/us/r1000/095/Purple/e0/a6/17/mzl.pbbxcjzt.1024x1024-65.jpg",
    "http://a3.mzstatic.com/us/r1000/036/Purple/cc/14/98/mzl.dyairego.1024x1024-65.jpg"
    );
    isGameCenterEnabled = 0;
    kind = software;
    languageCodesISO2A = (
    EN
    );
    price = 0;
    primaryGenreId = 6015;
    primaryGenreName = Finance;
    releaseDate = "2011-01-24T06:14:35Z";
    releaseNotes = "* View Real-time streaming prices for U.S. Treasuries \n\n* Open and Save your Citi Research in your favorite PDF Reader and Library such as iBooks\n\n* Search for your favorite videos";
    screenshotUrls = (
    "http://a3.mzstatic.com/us/r1000/066/Purple/17/51/fb/mzl.zywiavgn.png",
    "http://a5.mzstatic.com/us/r1000/026/Purple/73/85/97/mzl.csmdtndk.png"
    );
    sellerName = "Citibank, N.A.";
    sellerUrl = "http://";
    supportedDevices = (
    all
    );
    trackCensoredName = "Citi Velocity";
    trackContentRating = "4+";
    trackId = 414697122;
    trackName = "Citi Velocity";
    trackViewUrl = "http://itunes.apple.com/us/app/citi-velocity/id414697122?mt=8&uo=4";
    userRatingCount = 5;
    userRatingCountForCurrentVersion = 1;
    version = "1.4";
    wrapperType = software;
    }
    );
    }

     

    然后从中取得 results 数组即可,具体代码如下所示:

        NSDictionary *jsonData = [dataPayload JSONValue];
    NSArray *infoArray = [jsonData objectForKey:@"results"];
    NSDictionary *releaseInfo = [infoArray objectAtIndex:0];
    NSString *latestVersion = [releaseInfo objectForKey:@"version"];
    NSString *trackViewUrl = [releaseInfo objectForKey:@"trackViewUrl"];


     

    如果你拷贝 trackViewUrl 的实际地址然后在浏览器中打开,就会打开你的应用程序在 appstore 中的介绍页面。当然我们也可以在代码中调用 safari 来打开它。

        UIApplication *application = [UIApplication sharedApplication];
    [application openURL:[NSURL URLWithString:trackViewUrl]];


  • 相关阅读:
    155. 最小栈
    160. 相交链表
    PAT 1057 Stack
    PAT 1026 Table Tennis
    PAT 1017 Queueing at Bank
    PAT 1014 Waiting in Line
    PAT 1029 Median
    PAT 1016 Phone Bills
    PAT 1010 Radix
    PAT 1122 Hamiltonian Cycle
  • 原文地址:https://www.cnblogs.com/kesalin/p/query_app_info_from_appstore.html
Copyright © 2011-2022 走看看