作者:iHTCboy

App Store 在 iOS 11 之前,App 排行榜一直是衡量开发者 App 活跃度的指标,但在 iOS 11 后苹果弱化了榜单功能,改为了二级入口,导致查询榜单困难,编者通过深入调研最终实现了一个查看 App 榜单、搜索、信息、发布生效等强大功能的开源 App。

一、前言

App Store 一直以来都是 iPhone 生态的最重要一环,在初代 iPhone 商店,因为 App 比较少,当时就有 Top 25 榜单:

然后在后续的 App Store 迭代中,排行榜(Top Charts)一直是一个主要的入口,新用户基本都会从榜单下载 App,所以,榜单的重要性不容忽视。

直到 2017 年,虽然占了不到 30% 的手机份额,但 iPhone 的体量已经非常大,App Store 应用数量已经达到 220 万。App Store 的展示和推荐,显然满足不了每天巨大的新 App,有越来越多的 App 希望得到关注;而另一方面,排行榜刷榜问题一直存在;还有就是 App Store 的设计已经满足不了需求!比如更新(Updates) 标签功能单一,就是负责显示需要更新的 App 列表。

所以,从 iOS 11 开始,苹果将 AppStore 重新设计,增加了 Today 和 Games 游戏标签入口,而排行榜列表放到了 Apps 标签的二级入口中。苹果加强了自己的编辑团队推荐的App,在游戏和应用标签分类的前面也加入了大区域的编辑推荐 App,如今已经看不到榜单了。

而现在 iOS 15 中的 App Store 增加了更多的功能,比如产品页优化、自定产品页、App 内活动(In-App Events)等,目的很明显就是让开发者增加活跃内容,提升 App 日活和收入。

而排行榜功能,其实已经不单单是一个榜单的作用,经常这些年的沉淀,榜单基本已经稳定。比如大家看到的 App,常年不变,而冲到榜单的 App,会获得更多的下载量。对于开发者来说,榜单可以用来预测应用收入、使用量和下载量的一个重要指标。对于用户来说,发现一些有趣或者热门的 App,依然是部分老用户的习惯。

所以,编者希望通过实现一个 App Store 排行榜,方便日常查看,同时查看信息,搜索或应用发布状态订阅等功能,解决了非常多的痛点问题。

二、效果展示

首先,我们先来介绍一下,目前 iAppStore 实现了那些功能。

iAppStroe 是一款使用 SwiftUI 打造的苹果商店工具类 App。

  1. 提供苹果实时榜单查询,包含 iOS 和 iPad 的热门免费榜、热门付费榜、畅销榜,还有新上架榜、新上架免费榜、新上架付费榜等。
  2. 提供查询 app 详细页面内容、搜索 app、订阅 app 状态等功能。
  3. 支持苹果所有国家和地区的商店,无需切换 Apple Id,即可查看!

2.1 排行榜

首先,App Store 的榜单有很多,包含 iOS 和 iPad 的热门免费榜、热门付费榜、畅销榜,还有新上架榜、新上架免费榜、新上架付费榜等,我们都实现了这些榜单。另外,我们将 App Store 榜单的 UI 还原,同时,也增加了更多的信息展示,比如 App 所属分类等。

最重要的是,我们把所有国家和地区的商店,都集成在一个面板中,通过下拉列表选择,实现快速切换榜单。

2.2 App 详细页

App 详细页面,把开发者最关心的参数显示在最前面。另外,复制包含或者 App ID 是一个高频的需求,App 描述和更新方案也高仿了 App Store 的效果。预览区包含 iPhone 和 iPad 图片。点击可以显示大图,并且可以下载和分享大图。

2.3 搜索

搜索区,可以输入关键字模糊搜索,或者 App ID精准搜索。另外,在右上角切换国家和地区,显示不同地区的 App 搜索。

2.4 应用状态订阅

这个状态订阅是什么意思?就是可以监听 App 在商店的状态,举例来说,App 发布了新版本,那么大概要多久才能在商店上显示呢?所以,我们可以通过苹果的接口,来定时的查询 App 的状态,从而知道 App 什么时候生效。还有新 App 刚刚发布时、或者 App 需要下架了,什么时候才从商店消失等。

2.5 其它

为了方便开发者使用,App 列表长按时,会弹出操作列表,可以已经复制 App 的信息或者快速打开 App Store 产品页,尽可能的快捷获取内容!另外,还支持暗黑模式,依然精美绝伦!切换图标可以选择自己显示的图标等。

大家想要什么功能,可以在评论区留言啊~

三、调研工作

接下来,我们说一下要实现以上功能,需要的 API 怎么调研出来的!通过大量的网页检索,最终测试后整理成有价值的列表:

3.1 榜单接口

查询排行榜的 API 示例

链接示例 链接说明 参考链接
https://rss.applemarketingtools.com/api/v2/cn/apps/top-free/100/apps.json 苹果官方提供的接口,除了 App 榜单,还支持苹果自家的 Music、Books、Podcasts 产品的榜单,目前提供前 200 条数据。 RSS Builder
http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/topfreeapplications/limit=100/json?cc=cn Apple RSS Feeds,苹果旧的 RSS接口,目前提供前 100 条数据。 RSS Information
https://itunes.apple.com/cn/rss/topfreeapplications/limit=100/json 苹果榜单查询接口,目前提供前 100 条数据。 Stack Overflow
https://itunes.apple.com/rss/topGrossingApplications/limit=100/json?cc=cn 苹果榜单查询接口,目前提供前 100 条数据。把地区语言放到单独成一个字段。 链接

以上内容在苹果公开的文档,都没有查询到 API 文档。但为苹果网站到在一个页面:
Apple Services Performance Partners,其中一项服务叫:Enterprise Partner Feed Relational(企业信息流合作伙伴?),目前这个合作好像很难申请到。所以,相关的文档链接都无法访问到,比如 https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-api.html。

那么以上链接中几个参数类型,因为没有文档,所以调研梳理如下:

榜单类型

字段 英文说明 解析
topFreeApplications Top Free Applications 热门免费应用
topPaidApplications Top Paid Applications 热门付费应用
topGrossingApplications Top Grossing Applications 畅销榜(收入最高)
newApplications New Applications 新应用
newFreeApplications New Free Applications 新的免费应用
newPaidApplications New Paid Applications 新的付费应用
topFreeiPadApplications Top Free iPad Applications 热门免费 iPad 应用
topPaidiPadApplications Top Paid iPad Applications 热门付费 iPad 应用
topGrossingiPadApplications Top Grossing iPad Applications 最畅销的 iPad 应用

应用分类

分类 ID 英文说明 解析
6000 Business 商务
6001 Weather 天气
6002 Utilities 工具
6003 Travel 旅游
6004 Sports 体育
6005 Social Networking 社交
6006 Reference 参考资料
6007 Productivity 效率
6008 Photo & Video 摄影与录像
6009 News 新闻,中国区无数据⚠️
6010 Navigation 导航
6011 Music 音乐
6012 Lifestyle 生活
6013 Health & Fitness 健康健美
6014 Games 游戏
6015 Finance 财务
6016 Entertainment 娱乐
6017 Education 教育
6018 Books 图书
6019 Places & Objects 地点与物品,字段已无效⚠️
6020 Medical 医疗
6021 Newsstand 报刊杂志
6022 Catalogs 商品指南,字段已无效⚠️
6023 Food & Drink 美食佳饮
6024 Shopping 购物
6025 Stickers iMessage 贴纸,字段已无效⚠️
6026 Developer_Tools 软件开发工具
6027 Graphics_And_Design 图形和设计

更多分类,参考苹果网站的 HTML 标签:App Store

国家或地区标识

ID 英文说明 解析
cn China mainland 中国
hk Hong Kong 中国香港
tw Taiwan 中国台湾
mo Macao 中国澳门
us United States 美国
jp Japan 日本
kr Korea, Republic of 韩国

更多分类标识,参考苹果网站的 HTML 标签:RSS Builder

接口说明

原本接口提供 200 条数据查询,但 20221 年 9 月 2 日,苹果接口调整后,大幅削减 App Store 应用排行数据分享,从 1500 名降至 200 名。目前 AppStore 总榜、应用、游戏榜、分类榜只能查看前 200 个 App 的数据。

3.2 搜索接口

App 搜索接口比如简单,并且有官方文档:

  • iTunes Store API
  • iTunes Search API: Constructing Searches

接口示例:

https://itunes.apple.com/search?term=斗罗大陆&country=cn&limit=200&entity=software

term 字段就是关键词,country 字段是国家或地区的标签,跟上面的榜单接口是同一个。entity=software 固定为搜索软件就好。详细的使用,可以参考官方文档,这里就不展开了。

3.3 App 详细信息

查询某个 App 可以使用 lookup 接口,具体可以查看官网文档:Lookup Examples。

接口示例:

https://itunes.apple.com/cn/lookup?id=1558453472

3.4 App 评论内容

查询某个 App 的用户评论内容,没有在苹果的文档中找到,但是根据以上的调研,接口使用问题不大。

接口示例:

https://itunes.apple.com/cn/rss/customerreviews/id=989673964/sortBy=mostRecent/json

地区、App Id、sortBy 字段,就可以搜索。如果需要分页或者获取更多,可以参考文末的链接。

四、开发思路

有了以上的 API 接口,就能实现我们的 App,这样使用 SwiftUI 来构建,现已开源:

  • iAppStore - GitHub

详细的实践过程就不在这样讲解了,因为 App 是工具类应用,交互的内容不多,所以并不是很复杂。当然,使用 SwiftUI 构建 UI 过程异常的快速,但是如果要调整 UI 细节,确定需要花很多心思。比如,SwiftUI 还不支持 WebView,所以用 SFSafariViewController 桥接的 View 在 SwiftUI 组件中显示会异常。

  • How do I use SFSafariViewController with SwiftUI? - Stack Overflow

另外,就是苹果 API 的坑,接口返回的字段 im:idim:bundleId,包含冒号,让人怀疑人生!最后,通过自定义键值名,解决了解析映射的问题。详细,可以参考源代码中 AppRank.swift 类。

struct IDAttributes: Codable {let imBundleID, imID: String// 自定义键值名enum CodingKeys: String, CodingKey {case imID = "im:id"case imBundleID = "im:bundleId"}
}

综上,如果是个人开发的 App,可以开始使用 SwiftUI 来开发,毕竟原生的体验和原生的组件,用户起来也很快乐。另外,不考虑支持低版本系统,使用 SF Symbols 提供的图标,也非常的友好!

五、总结

iAppStore 从构思到实现,花了半个月的时间,期间调研接口和调试接口花了很多时间,网上依然看到很多人问这些接口,相信很多开发者都不知道有这些接口,所以本文也算是一个答案总结,希望这个问题从此消失哈~

最后,iAppStore 只是从编者需求来实现的一个产品,所以一定存在很多的问题,但同时它是一个开源项目,所以,如果大家有兴趣,一起来参与,增加更多有趣或者黑科技的体验吧!

欢迎大家有任何想法或者建议,可以在评论区给我们反馈。也可以到 iAppStore - GitHub 给我们 Star 鼓励!感谢大家~

欢迎大家在评论区一起交流~

欢迎关注我们,了解更多 iOS 和 Apple 的动态~

六、参考

  • app store - How to get top 400 lists from iTunes - Stack Overflow
  • web services - How can I use Appstore API to get top100 list? What is the common architecture to build a appstore application website? - Stack Overflow
  • 如何查询某个app在appstore特定关键词搜索下的排名? - 知乎
  • AppStore应用排行榜、应用获取接口 | 安琪琪
  • iTunes Enterprise Partner Feed
  • RSS Builder
  • RSS Information - Apple
  • RSS for Top Movies got no results - Apple Community
  • Module: StoreApi::AppStore — Documentation for store_api (0.2.2)
  • 苹果大幅削减 App Store 应用排行数据分享,从 1500 名降至 200 名 - IT之家
  • 从 iTunes 下载的 App Store
  • iTunes Store API
  • iTunes Search API: Constructing Searches
  • iTunes Search API: Lookup Examples
  • Analysis of PodCruncher App Ratings and Reviews on iTunes
  • 监听 iOS App 新评论 · Bell’s blog
  • Marketing Tools and Resources - Apple Services
  • 37iOS/iAppStore-SwiftUI - GitHub
  • ios - How do I use SFSafariViewController with SwiftUI? - Stack Overflow
  • SF Symbols - Apple Developer

用 SwiftUI 实现一个开源的 App Store相关推荐

  1. 用 SwiftUI 实现 AI 聊天对话 app - iChatGPT

    一.前言 关于 ChatGPT 的话题,大家都不陌生,我们直入话题,因为 ChatGPT 目前限制中国访问服务,所以如果直接使用 ChatGPT 网页进行对话,还是不太方便.通过 ChatGPT Se ...

  2. Fastlane- app自动编译、打包多个版本、上传到app store

    Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包.发布等工作,可以节省大量的时间. Github:https://github.com/fastlane/fa ...

  3. iOS11正式推出,第一批AR应用上线App Store!

    今天苹果推出了iOS11正式版,其能够适配包括下至iPhone5s以及最近几款iPad的"数以百万计的设备",如果你的设备也能升级到该系统,意味着接下来可以享用一个全新的App S ...

  4. 比iPhone8更重要的新App Store,给内容产品的未来指出明路

    App Store 历史上最大的更新马上要来了,它将完全改变开发者奉行多年的推广运营方式,但它更深远的影响,在于启示别的内容平台怎么做内容. 是iPhone 8.iPhone 8 Plus 还是 iP ...

  5. 探究App推广之路:流量思维永不死 ☞ iphone中App store上架优化建议

    文主要是写给CEO或者是公司高层看的,为App推广扩展新的思路.如果你是运营人员,可以把此文转给老板看看,有助于缓解你的KPI压力! App创业进入下半场,增量市场已经变为存量市场,流量获取成本与日俱 ...

  6. 苹果App Store上传应用流程详解

    在向AppStore提交应用之前,开发者首先要成为苹果iOS开发者项目的成员,每年向苹果缴纳99美元或199美元的费用(具体申请方法后期更新).其次创建相应的证书 Development是开发环境下的 ...

  7. App Store Connect的新特性(WWDC 2018 session 301 303)

    WWDC 2018 session 301: what's new in App Store Connect WWDC 2018 session 303: Automating App Store C ...

  8. 苹果税遭重击!法院判决:App Store必须90天内开放第三方支付,苹果市值一夜蒸发5477亿...

    丰色 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI "苹果税"这一苹果的生财利器,这回是真遇着麻烦了. 刚刚,美国加州法院一纸禁令,苹果股价收跌3.31%,市值蒸发约 ...

  9. 准备在App Store上发布您的应用程序

    由donnywals于2019年12月24日发布 您已经完成了构建应用程序的所有工作,UI看起来很棒,动画很流畅,并且可以将应用程序移交给其他人了. 也许您甚至已经准备好开始在App Store上提供 ...

  10. 开源一个上架 App Store 的相机 App

    原创 2017-02-21 伯乐专栏/陈浩 iOS大全 (点击上方公众号,可快速关注) 来源:伯乐在线 - Hawk0620 如有好文章投稿,请点击 → 这里了解详情 如需转载,发送「转载」二字查看说 ...

最新文章

  1. android控件跟随手势滑动改变位置
  2. 服务器控件调用JS方法
  3. boost::spirit模块实现一个类似于 XML 的小型解析器,Karma 用于打印生成的 AST
  4. html自定义标签模板,javascript – 模板与HTML自定义元素的使用
  5. pythondef元组参数传递_Python参数传递(传值传引用)
  6. SpringCloud使用RabbitMQ报错Rabbit health check failed
  7. Anaconda——如何“重命名”conda虚拟环境(通过复制和删除操作实现)
  8. cogs 1111. 最短路
  9. SimpleGIS在线地图插件
  10. python音乐推荐系统_音乐推荐系统
  11. 科学计算机带度分秒,科学计算器度分秒
  12. 详解boost库中的Message Queue
  13. c语言提取数字的每一位,C++,如何提取数字的每一位
  14. 如何购买腾讯云服务器?腾讯云服务器购买教程
  15. 志愿者服务团队组织由哪些组织组成
  16. C++流式输入输出加速 给 cin/cout 装个小火箭
  17. 苏州新导RFID智能机房资产管理系统,RFID资产管理追踪系统
  18. 分布式商城项目-后台开发-SSM工程整合网站模板
  19. 程序员带新人的几点思考
  20. 美拍运营技巧都有哪些 如何入门网络媒体行业

热门文章

  1. angular 更新表单值的两种方法: setvalue,patchvalue
  2. QT软件ICON图标在线制作
  3. 常用的项目管理工具有哪些?
  4. 2D游戏新手引导点光源和类迷雾实现
  5. java long to int_Java long(Long)与int(Integer)之间的转换
  6. OPICS 节假日维护
  7. 中国法定节假日调整内容公布 总天数增加1天
  8. 【指数数据处理】1. 指数的成分股参考日调整
  9. 西安大略大学计算机专业排名,加拿大大学计算机专业排名一览
  10. ubuntu tty联网