• [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]];


  • 相关阅读:
    javascript学习笔记1
    html的那些小小细节
    高级排序之希尔排序
    归并排序
    java 块语句 和引用类型
    扩展思维
    javase jdk 环境变量 涵义
    java 冒泡排序 二分查找 选择排序 插入排序
    kafka原理
    java web 程序---注册页面密码验证
  • 原文地址:https://www.cnblogs.com/kesalin/p/query_app_info_from_appstore.html
Copyright © 2020-2023  润新知