国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

用 SwiftUI 實(shí)現(xiàn)一個(gè)開源的 App Store

開源 iOS
App Store 在 iOS 11 之前,App 排行榜一直是衡量開發(fā)者 App 活躍度的指標(biāo),但在 iOS 11 后蘋果弱化了榜單功能。

App Store 在 iOS 11 之前,App 排行榜一直是衡量開發(fā)者 App 活躍度的指標(biāo),但在 iOS 11 后蘋果弱化了榜單功能,改為了二級入口,導(dǎo)致查詢榜單困難,編者通過深入調(diào)研最終實(shí)現(xiàn)了一個(gè)查看 App 榜單、搜索、信息、發(fā)布生效等強(qiáng)大功能的開源 App。

一、前言

App Store 一直以來都是 iPhone 生態(tài)的最重要一環(huán),在初代 iPhone 商店,因?yàn)?App 比較少,當(dāng)時(shí)就有 Top 25 榜單:

然后在后續(xù)的 App Store 迭代中,排行榜(Top Charts)一直是一個(gè)主要的入口,新用戶基本都會從榜單下載 App,所以,榜單的重要性不容忽視。

直到 2017 年,雖然占了不到 30% 的手機(jī)份額,但 iPhone 的體量已經(jīng)非常大,App Store 應(yīng)用數(shù)量已經(jīng)達(dá)到 220 萬。App Store 的展示和推薦,顯然滿足不了每天巨大的新 App,有越來越多的 App 希望得到關(guān)注;而另一方面,排行榜刷榜問題一直存在;還有就是 App Store 的設(shè)計(jì)已經(jīng)滿足不了需求!比如更新(Updates) 標(biāo)簽功能單一,就是負(fù)責(zé)顯示需要更新的 App 列表。

所以,從 iOS 11 開始,蘋果將 AppStore 重新設(shè)計(jì),增加了 Today 和 Games 游戲標(biāo)簽入口,而排行榜列表放到了 Apps 標(biāo)簽的二級入口中。蘋果加強(qiáng)了自己的編輯團(tuán)隊(duì)推薦的App,在游戲和應(yīng)用標(biāo)簽分類的前面也加入了大區(qū)域的編輯推薦 App,如今已經(jīng)看不到榜單了。

而現(xiàn)在 iOS 15 中的 App Store 增加了更多的功能,比如產(chǎn)品頁優(yōu)化、自定產(chǎn)品頁、App 內(nèi)活動(In-App Events)等,目的很明顯就是讓開發(fā)者增加活躍內(nèi)容,提升 App 日活和收入。

而排行榜功能,其實(shí)已經(jīng)不單單是一個(gè)榜單的作用,經(jīng)常這些年的沉淀,榜單基本已經(jīng)穩(wěn)定。比如大家看到的 App,常年不變,而沖到榜單的 App,會獲得更多的下載量。對于開發(fā)者來說,榜單可以用來預(yù)測應(yīng)用收入、使用量和下載量的一個(gè)重要指標(biāo)。對于用戶來說,發(fā)現(xiàn)一些有趣或者熱門的 App,依然是部分老用戶的習(xí)慣。

所以,編者希望通過實(shí)現(xiàn)一個(gè) App Store 排行榜,方便日常查看,同時(shí)查看信息,搜索或應(yīng)用發(fā)布狀態(tài)訂閱等功能,解決了非常多的痛點(diǎn)問題。

二、效果展示

首先,我們先來介紹一下,目前 iAppStore 實(shí)現(xiàn)了那些功能。

iAppStroe[1] 是一款使用 SwiftUI 打造的蘋果商店工具類 App。

提供蘋果實(shí)時(shí)榜單查詢,包含 iOS 和 iPad 的熱門免費(fèi)榜、熱門付費(fèi)榜、暢銷榜,還有新上架榜、新上架免費(fèi)榜、新上架付費(fèi)榜等。

提供查詢 app 詳細(xì)頁面內(nèi)容、搜索 app、訂閱 app 狀態(tài)等功能。

支持蘋果所有國家和地區(qū)的商店,無需切換 Apple Id,即可查看!

2.1 排行榜

首先,App Store 的榜單有很多,包含 iOS 和 iPad 的熱門免費(fèi)榜、熱門付費(fèi)榜、暢銷榜,還有新上架榜、新上架免費(fèi)榜、新上架付費(fèi)榜等,我們都實(shí)現(xiàn)了這些榜單。另外,我們將 App Store 榜單的 UI 還原,同時(shí),也增加了更多的信息展示,比如 App 所屬分類等。

最重要的是,我們把所有國家和地區(qū)的商店,都集成在一個(gè)面板中,通過下拉列表選擇,實(shí)現(xiàn)快速切換榜單。

2.2 App 詳細(xì)頁

App 詳細(xì)頁面,把開發(fā)者最關(guān)心的參數(shù)顯示在最前面。另外,復(fù)制包含或者 App ID 是一個(gè)高頻的需求,App 描述和更新方案也高仿了 App Store 的效果。預(yù)覽區(qū)包含 iPhone 和 iPad 圖片。點(diǎn)擊可以顯示大圖,并且可以下載和分享大圖。

2.3 搜索

搜索區(qū),可以輸入關(guān)鍵字模糊搜索,或者 App ID 精準(zhǔn)搜索。另外,在右上角切換國家和地區(qū),顯示不同地區(qū)的 App 搜索。

2.4 應(yīng)用狀態(tài)訂閱

這個(gè)狀態(tài)訂閱是什么意思?就是可以監(jiān)聽 App 在商店的狀態(tài),舉例來說,App 發(fā)布了新版本,那么大概要多久才能在商店上顯示呢?所以,我們可以通過蘋果的接口,來定時(shí)的查詢 App 的狀態(tài),從而知道 App 什么時(shí)候生效。還有新 App 剛剛發(fā)布時(shí)、或者 App 需要下架了,什么時(shí)候才從商店消失等。

2.5 其它

為了方便開發(fā)者使用,App 列表長按時(shí),會彈出操作列表,可以已經(jīng)復(fù)制 App 的信息或者快速打開 App Store 產(chǎn)品頁,盡可能的快捷獲取內(nèi)容!另外,還支持暗黑模式,依然精美絕倫!切換圖標(biāo)可以選擇自己顯示的圖標(biāo)等。

大家想要什么功能,可以在評論區(qū)留言啊~

三、調(diào)研工作

接下來,我們說一下要實(shí)現(xiàn)以上功能,需要的 API 怎么調(diào)研出來的!通過大量的網(wǎng)頁檢索,最終測試后整理成有價(jià)值的列表:

3.1 榜單接口

查詢排行榜的 API 示例

以上內(nèi)容在蘋果公開的文檔,都沒有查詢到 API 文檔。但為蘋果網(wǎng)站到在一個(gè)頁面: Apple Services Performance Partners[6],其中一項(xiàng)服務(wù)叫:Enterprise Partner Feed Relational[7](企業(yè)信息流合作伙伴?),目前這個(gè)合作好像很難申請到。所以,相關(guān)的文檔鏈接都無法訪問到,比如 affiliate.itunes.apple.com[8]。

那么以上鏈接中幾個(gè)參數(shù)類型,因?yàn)闆]有文檔,所以調(diào)研梳理如下:

榜單類型

應(yīng)用分類

更多分類,參考蘋果網(wǎng)站的 HTML 標(biāo)簽:App Store[9]

國家或地區(qū)標(biāo)識

更多分類標(biāo)識,參考蘋果網(wǎng)站的 HTML 標(biāo)簽:RSS Builder[10]

接口說明

原本接口提供 200 條數(shù)據(jù)查詢,但 20221 年 9 月 2 日,蘋果接口調(diào)整后,大幅削減 App Store 應(yīng)用排行數(shù)據(jù)分享,從 1500 名降至 200 名。目前 AppStore 總榜、應(yīng)用、游戲榜、分類榜只能查看前 200 個(gè) App 的數(shù)據(jù)。

3.2 搜索接口

App 搜索接口比如簡單,并且有官方文檔:

  • iTunes Store API[11]
  • iTunes Search API: Constructing Searches[12]

接口示例:

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

term 字段就是關(guān)鍵詞,country 字段是國家或地區(qū)的標(biāo)簽,跟上面的榜單接口是同一個(gè)。entity=software 固定為搜索軟件就好。詳細(xì)的使用,可以參考官方文檔,這里就不展開了。

3.3 App 詳細(xì)信息

查詢某個(gè) App 可以使用 lookup 接口,具體可以查看官網(wǎng)文檔:Lookup Examples[13]。

接口示例:

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

3.4 App 評論內(nèi)容

查詢某個(gè) App 的用戶評論內(nèi)容,沒有在蘋果的文檔中找到,但是根據(jù)以上的調(diào)研,接口使用問題不大。

接口示例:

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

地區(qū)、App Id、sortBy 字段,就可以搜索。如果需要分頁或者獲取更多,可以參考文末的鏈接。

四、開發(fā)思路

有了以上的 API 接口,就能實(shí)現(xiàn)我們的 App,這樣使用 SwiftUI 來構(gòu)建,現(xiàn)已開源:

  • iAppStore - GitHub[14]

詳細(xì)的實(shí)踐過程就不在這樣講解了,因?yàn)?App 是工具類應(yīng)用,交互的內(nèi)容不多,所以并不是很復(fù)雜。當(dāng)然,使用 SwiftUI 構(gòu)建 UI 過程異常的快速,但是如果要調(diào)整 UI 細(xì)節(jié),確定需要花很多心思。比如,SwiftUI 還不支持 WebView,所以用 SFSafariViewController 橋接的 View 在 SwiftUI 組件中顯示會異常。

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

另外,就是蘋果 API 的坑,接口返回的字段 im:id、im:bundleId,包含冒號,讓人懷疑人生!最后,通過自定義鍵值名,解決了解析映射的問題。詳細(xì),可以參考源代碼中 AppRank.swift[16] 類。

  1. struct IDAttributes: Codable { 
  2.     let imBundleID, imID: String 
  3.      
  4.     // 自定義鍵值名 
  5.      enum CodingKeys: String, CodingKey { 
  6.         case imID = "im:id" 
  7.         case imBundleID = "im:bundleId" 
  8.     } 

綜上,如果是個(gè)人開發(fā)的 App,可以開始使用 SwiftUI 來開發(fā),畢竟原生的體驗(yàn)和原生的組件,用戶起來也很快樂。另外,不考慮支持低版本系統(tǒng),使用 SF Symbols[17] 提供的圖標(biāo),也非常的友好!

五、總結(jié)

iAppStore 從構(gòu)思到實(shí)現(xiàn),花了半個(gè)月的時(shí)間,期間調(diào)研接口和調(diào)試接口花了很多時(shí)間,網(wǎng)上依然看到很多人問這些接口,相信很多開發(fā)者都不知道有這些接口,所以本文也算是一個(gè)答案總結(jié),希望這個(gè)問題從此消失哈~ 最后,iAppStore 只是從編者需求來實(shí)現(xiàn)的一個(gè)產(chǎn)品,所以一定存在很多的問題,但同時(shí)它是一個(gè)開源項(xiàng)目,所以,如果大家有興趣,一起來參與,增加更多有趣或者黑科技的體驗(yàn)吧!歡迎大家有任何想法或者建議,可以在評論區(qū)給我們反饋。也可以到 iAppStore - GitHub[18] 給我們 Star 鼓勵(lì)!感謝大家~

參考資料

[1] iAppStroe:

https://github.com/37iOS/iAppStore-SwiftUI

[2] RSS Builder: https://rss.applemarketingtools.com

[3] RSS Information:

https://www.apple.com/rss/

[4] Stack Overflow:

https://stackoverflow.com/questions/29997991/how-to-get-top-400-lists-from-itunes

[5] 鏈接:

https://www.kalman03.com/2015/05/04/tech/appstore_affiliates_resource/

[6] Apple Services Performance Partners:

https://affiliate.itunes.apple.com/resources/

[7] Enterprise Partner Feed Relational:

https://affiliate.itunes.apple.com/resources/documentation/itunes-enterprise-partner-feed/

[8] affiliate.itunes.apple.com:

https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-api.html

[9] App Store:

https://apps.apple.com/cn/genre/ios/id36

[10] RSS Builder:

https://rss.applemarketingtools.com/

[11] iTunes Store API:

https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-api/

[12] iTunes Search API:

Constructing Searches: https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/iTuneSearchAPI/Searching.html#//apple_ref/doc/uid/TP40017632-CH5-SW1

[13] Lookup Examples:

https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/iTuneSearchAPI/LookupExamples.html#//apple_ref/doc/uid/TP40017632-CH7-SW1

[14] iAppStore - GitHub:

https://github.com/37iOS/iAppStore-SwiftUI

[15] How do I use SFSafariViewController with SwiftUI? - Stack Overflow:

https://stackoverflow.com/questions/56518029/how-do-i-use-sfsafariviewcontroller-with-swiftui

[16] AppRank.swift:

https://github.com/37iOS/iAppStore-SwiftUI/blob/main/iAppStore/Models/AppRank.swift

[17] SF Symbols:

https://developer.apple.com/sf-symbols/

[18] iAppStore - GitHub:

https://github.com/37iOS/iAppStore-SwiftUI

 

責(zé)任編輯:姜華 來源: Swift社區(qū)
相關(guān)推薦

2017-02-24 10:30:51

iOS開源App Store

2011-12-28 10:09:53

云計(jì)算App StoreCA

2022-06-16 15:07:06

布局結(jié)構(gòu)app

2017-08-14 10:05:50

開發(fā)者App Store

2021-03-31 13:28:17

開源工具Python編程語言

2011-10-11 08:39:04

LinuxApp store

2016-10-18 20:50:00

android鎖屏App

2023-03-15 09:00:43

SwiftUISlider

2020-06-04 12:55:44

PyTorch分類器神經(jīng)網(wǎng)絡(luò)

2023-11-03 11:57:04

2014-04-14 15:54:00

print()Web服務(wù)器

2013-07-30 16:27:20

App Store潛規(guī)則

2021-06-25 10:38:05

JavaScript編譯器前端開發(fā)

2025-08-27 08:24:23

2014-07-16 09:56:52

2016-05-25 10:14:04

開源數(shù)據(jù)管道 ETL

2014-09-25 09:51:29

Android App個(gè)人博客

2020-11-30 06:20:13

javascript

2012-06-15 09:35:17

2016-03-01 14:37:47

華為
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

日韩视频在线观看免费| а天堂中文最新一区二区三区| 乱亲女h秽乱长久久久| 欧美午夜在线观看| 国产在线视频综合| 国产精品麻豆久久| 精品福利在线观看| 日韩精品在线中文字幕| 9色国产精品| 欧美激情视频一区二区三区不卡| 福利在线导航136| 天天综合日日夜夜精品| 最猛黑人系列在线播放| 亚洲一级影院| 欧美sm美女调教| 欧美尤物美女在线| 大桥未久av一区二区三区中文| 免费观看成人高| 影视一区二区| 激情伦成人综合小说| 亚洲丁香日韩| 高清欧美电影在线| caoporn成人| 九九久久久久99精品| xxxx日韩| 欧美在线观看视频| 欧美1区视频| 免费精品视频一区二区三区| 亚洲一区二区免费看| 中文字幕日韩一区二区三区| 精品亚洲精品| 日韩av电影国产| 九九热hot精品视频在线播放| 狼人精品一区二区三区在线 | 亚洲欧美国产精品专区久久| 中文字幕在线看片| 欧美黑人国产人伦爽爽爽| 国产亚洲一区二区三区啪| 国产精品女人网站| 亚洲第一二三四区| 一本到三区不卡视频| 中文字幕永久视频| 久久精品国产亚洲高清剧情介绍| 日韩精品福利片午夜免费观看| h视频久久久| 欧美大片免费看| 亚洲成人tv| 国产这里只有精品| 在线日本制服中文欧美| 中文一区一区三区免费| www.久久久久久久久| 亚洲私人影吧| 中文字幕亚洲一区二区三区五十路| 四虎国产精品永久在线国在线| 欧美成人a∨高清免费观看| 日韩av黄色| 伦理中文字幕亚洲| 欧美1区2区3区| 亚洲中国色老太| 久久久午夜精品理论片中文字幕| 屁屁影院在线观看| 国产日韩欧美亚洲| 久草在线新资源| 久久影视电视剧免费网站| 99视频在线精品国自产拍免费观看| 欧美一区国产一区| 久久综合999| av老司机免费在线| 久久国产精品久久| 欧美性生交片4| 精品久久电影| 免费看污黄网站| 中文字幕精品国产| 黄色欧美网站| 97国产精东麻豆人妻电影| 国产一区二区三区高清在线观看| 久久精品日产第一区二区| 91福利国产成人精品播放| 色又黄又爽网站www久久| 亚洲精品伦理| 日韩视频在线观看视频| 亚洲免费在线观看视频| 国产日韩欧美中文在线| 婷婷精品国产一区二区三区日韩| 欧美日韩国产一级片| 一区二区三区导航| 国产精品麻豆一区二区三区| 超碰日本道色综合久久综合| 久久一区视频| 88xx成人永久免费观看| 中文字幕日本最新乱码视频| 欧美成人免费va影院高清| 久久久国产一区二区三区四区小说 | 亚洲最大黄色| 日本不卡免费高清视频| 欧美日韩中文字幕日韩欧美| 亚洲综合日本| 欧美大片免费| 1234区在线观看视频免费| 国模吧一区二区| 精品动漫一区二区三区| 欧美激情1区2区3区| 校园春色亚洲| 九色中文视频| 视频一区视频二区视频三区高| 欧美床上激情在线观看| 欧美网站大全在线观看| 国产精品影视在线观看| 免费一区二区三区视频导航| 91网址在线观看| 妞干网在线观看| 四虎永久在线精品免费一区二区| 在线观看国产91| 97久久精品人人澡人人爽| 亚洲资源网站| 午夜精品一区| 精品一区二区三区自拍图片区| 亚洲综合视频网| 日本v片在线高清不卡在线观看| 国产精品视频一区二区三区综合| 成年人视频在线观看免费| 国产精品免费观看久久| 日本免费一区二区三区| 国产69精品久久久久久| 日韩在线免费视频| 日韩欧美一区二区久久婷婷| 国产日韩欧美一区二区三区乱码 | 性色一区二区三区| 高清精品久久| 在线观看v片| 免费在线视频欧美| 最新中文在线视频| 成年人深夜视频| 精品网站在线看| 日本国产精品视频| 久国内精品在线| 久久韩剧网电视剧| 亚洲高清在线观看| 精品国产一区二区三区四区四| 欧美老女人在线| 日韩午夜在线观看| 欧美精品一区二区蜜臀亚洲| 日韩欧美二区三区| 日韩精品一区二区三区第95| 成人h精品动漫一区二区三区| 蜜桃视频在线一区| 美国欧美日韩国产在线播放| 久久激情五月激情| 成人精品视频一区二区三区尤物| 国产成人99久久亚洲综合精品| 韩日精品视频一区| 波多野结衣91| 中文字幕久久午夜不卡| 亚洲午夜三级在线| 911精品国产一区二区在线| 欧美精品一区在线观看| 色婷婷av一区二区三区在线观看| 日韩精品在线免费观看视频| 亚洲第一视频网站| 欧美成人精品不卡视频在线观看| 久久人人爽人人爽爽久久| 2019亚洲日韩新视频| 国产精品区一区二区三含羞草| 国产精品久久久久久久久久尿| 国外成人在线视频| 成人国产精品av| 一区二区视频国产| 久艹视频在线免费观看| 15—17女人毛片| 亚洲少妇第一页| 91啦中文在线| 麻豆精品在线| 在线精品国产| 欧美写真视频一区| 国产网站在线| 国产综合自拍| 久久er精品视频| 欧美性猛交xxxx黑人猛交| 91精品国产综合久久久久久漫画 | 青青在线精品| 亚洲私人影院| 亚洲视频一区二区在线| 午夜精品久久久| 9191久久久久久久久久久| 欧美精品videosex性欧美| 色噜噜国产精品视频一区二区 | 91精品久久久久久蜜桃| 国产a级黄色大片| 黄色av电影在线观看| 精品国产一区一区二区三亚瑟| 亚洲精品一二三区区别| 媚黑女一区二区| 午夜精品免费在线观看| 亚洲国产91色在线| 欧美激情视频网| 国产a级一级片| 另类一区二区| 午夜一区在线| 欧美一卡2卡3卡4卡| 日本黑人久久|