為什麼App無法刪除Apple Music的歌曲?
每個第三方Apple Music App都建立在Apple的MusicKit框架之上,而這個框架沒有任何函式可以從資料庫刪除歌曲,或從播放列表移除曲目。這不是漏洞,也不是疏忽,而是刻意設下的界線。Apple允許App讀取你的資料庫、把歌曲加進資料庫、建立並填入播放列表、設定按讚或減少推薦這類評分,以及播放音樂。但它不允許任何外部App移除、刪除或編輯已經存在的內容。這也保護了你:第三方App裡的一個小錯誤,不會悄悄抹去你幾年來累積的資料庫。這也代表,任何宣稱能「整理」或「清理」你音樂的App,實際上都在做同樣的三件事:把歌曲收進播放列表、調整評分,並在自己的App裡保留一份你已經確認過的清單。真正的刪除動作仍然發生在Apple原生的音樂App裡,最後由你自己確認。
每一款「整理Apple Music資料庫」的App都會撞上同一道牆:所有第三方App都建立在MusicKit之上,而MusicKit沒有刪除功能。這不是某個App的特殊怪癖,而是內建在API本身的限制。我在打造SongSweep時撞上了這道牆,而它也塑造了這個App的方方面面。
這是我剛開始開發時,希望能有人先寫給我看的一篇文章:MusicKit實際上讓App能做什麼,Apple為什麼要這樣設計,以及當一個App宣稱能「刪除」時,那到底代表什麼意思。不管你用的是哪一款整理App,這篇文章都能解釋滑動背後真正發生的事。
第三方App在Apple Music裡實際上能做什麼?
MusicKit是Apple提供給開發者、用來打造Apple Music相關App的框架,設計上刻意十分有限。App可以讀取你的資料庫(有哪些歌曲、專輯、播放列表),可以從Apple Music目錄把歌曲加進資料庫,可以建立新的播放列表並加入歌曲,可以替歌曲設定評分(按讚或減少推薦),也可以幫你播放歌曲。
這就是全部的工具了。沒有刪除功能,一旦歌曲加進播放列表後也沒辦法移除,也完全沒有辦法動到資料庫裡既有曲目的藝人名稱或專輯封面等中繼資料。包括SongSweep在內,你用過的每一款整理Apple Music的App,都是在這同一套權限範圍內運作的。
| 操作 | 是否允許App執行 | SongSweep的做法 |
|---|---|---|
| 讀取你的資料庫 | 允許 | 依月份、播放列表、藝人或智慧篩選顯示歌曲 |
| 把歌曲加入資料庫 | 允許 | 不用於整理,保留給App自身功能使用 |
| 建立並填入播放列表 | 允許 | 把篩選出去的歌加入「SongSweep - Sorted Out」 |
| 設定評分(按讚/減少推薦) | 允許 | 篩選時設為減少推薦,點愛心時設為按讚 |
| 播放歌曲 | 允許 | 在你決定前播放試聽 |
| 從資料庫刪除歌曲 | 不允許 | 無法做到,需在音樂App中手動刪除 |
| 從播放列表移除歌曲 | 不允許 | 無法把已加入「Sorted Out」的歌移除 |
| 編輯歌曲中繼資料 | 不允許 | 完全不會嘗試 |
Apple為什麼要這樣設計?
在你想到替代方案之前,這看起來確實很受限。試想,如果App Store上任何一款App都能從你的資料庫刪除歌曲,一次有問題的更新,或排序邏輯裡的一個小錯誤,就可能抹去你再也找不回來的幾年音樂。Apple把這個按鈕留在自己的App裡,介面、確認對話框和復原機制全都由自己掌控。
這是整個iOS共通的模式。第三方App可以讀取你的照片和聯絡人,但只有「照片」和「聯絡人」App能讓你不經過系統本身的確認就大量刪除項目。破壞性的操作會被留在資料本身附近,而不是散布在每一個能碰到它的App裡。
對開發者來說,這有點令人氣餒。但對身為使用者的你來說,這是一張你根本不需要去思考的安全網,直到某個第三方App真的出現漏洞的那一天為止。
那所謂的「音樂清理」App到底在做什麼?
在這些限制之下,打造一款誠實的資料庫整理App,實際上只有一種做法:把你想刪除的歌曲收進一個可以檢視的播放列表,調整評分讓Apple Music的推薦不再一直推給你,並保留一份本機清單,讓App記得你已經決定過的內容。
任何宣稱能做到不一樣的事的App,要嘛只是用不同的說法描述同一套機制,要嘛就只是在清除下載內容,這能釋放儲存空間,但歌曲本身仍留在資料庫裡,而不是真的移除。如果你看到截圖顯示某首歌在滑動後就「消失」了,仔細看看:那只是從那款App自己的畫面上消失,並沒有從Apple Music裡消失。
與其讓你以為「刪除」按鈕做得到它做不到的事,我寧願直接告訴你實際上會發生什麼。
SongSweep如何運用這三種權限?
當你在SongSweep裡篩選出一首歌,背景會同時發生三件事。這首歌會被加入名為「SongSweep - Sorted Out」的播放列表。透過Apple Music API向Apple Music傳送「減少推薦」評分,告訴Apple的推薦引擎少顯示這首歌和類似的音樂。而這首歌也會在SongSweep內部被標記為已確認,之後再也不會出現在你的滑動流程裡。
保留的運作方式不同:向右滑動時,Apple Music那端什麼都不會改變,只是把歌曲標記為已確認,之後不會再詢問你。書籤(向上滑動)則是先把歌曲存起來,留到之後再決定。除了對最近一次滑動使用「復原」之外,這些操作都無法逆轉,因為它們都不是破壞性的,而是純粹的新增動作:一筆播放列表項目、一個評分、一個本機標記。
之後要怎麼真正把歌曲刪除?
當你把一批歌曲篩選完之後,「SongSweep - Sorted Out」播放列表是你的檢視清單,不是會自動清空的垃圾桶。刪除是你在Apple原生的音樂App裡刻意執行的一個步驟,也正是Apple希望這項決定發生的地方。
如果你不想一首一首地開啟播放列表,而是想一次清掉一大批歌曲,大量刪除Apple Music歌曲的方法說明了iPhone和Mac上最快的做法。
- 打開音樂App,前往「SongSweep - Sorted Out」播放列表
- 在iPhone上,長按一首歌並點選「從資料庫中移除」,一次一首
- 在Mac上,用Cmd或Shift鍵選取播放列表中的多首歌,按右鍵選擇「從資料庫中移除」並確認
- 這些歌曲就會從資料庫中消失,已下載的檔案也會一併被移除
當App宣稱能「刪除」歌曲時,該注意什麼
App Store上沒有任何App,包括SongSweep在內,能在你自己於音樂App中完成最後一步之前,就把歌曲從你的Apple Music資料庫刪除或從播放列表移除。這是Apple API的硬性限制,不是缺少的功能。
如果你在用某個App時,滑動之後有首歌似乎從資料庫裡消失了,實際看看究竟發生了什麼:這幾乎總是代表這首歌是從那個App自己建立、自己管理的播放列表中被移除,而不是從你的Apple Music資料庫裡消失。在相信這類說法之前,先到音樂App裡確認一下資料庫的歌曲數量。
同樣的誠實態度也適用於重複歌曲偵測工具、儲存空間清理工具,或任何宣稱能一鍵清空資料庫的App。想了解整理App能負責任地做到哪些事,可以從如何整理Apple Music資料庫開始,或回到SongSweep親自試試看滑動整理的流程。
常見問題
有任何App可以刪除我Apple Music資料庫裡的歌曲嗎?
沒有。Apple的MusicKit框架不會讓任何第三方App擁有從資料庫刪除歌曲、或從播放列表移除歌曲的能力。這一步一定得由你自己在音樂App裡完成。
為什麼App可以加入歌曲,卻不能刪除歌曲?
加入歌曲或建立播放列表是新增性質的操作,不會破壞任何東西。刪除是破壞性的操作,所以Apple把這個權限留在自家的音樂App裡,避免有漏洞的第三方App一次抹去你的資料庫。
「減少推薦」會刪除歌曲嗎?
不會,它只會改變Apple Music推薦給你的內容。歌曲依然原封不動留在你的資料庫裡,「減少推薦」只是告訴演算法少顯示這首歌和類似的音樂。
如果我一直沒刪除「SongSweep - Sorted Out」播放列表裡的歌,會怎麼樣?
不會有什麼壞影響。它會一直留在資料庫裡,作為一個普通的播放列表,你隨時都能回去查看。SongSweep不會自動移除裡面的歌曲,所以它會一直當作一份永久的檢視清單,直到你自己在音樂App裡刪除這些歌曲為止。
未來Apple有可能為App新增刪除API嗎?
有可能,Apple會不斷更新MusicKit。但截至撰寫本文時,仍沒有提供給第三方App的刪除功能。如果真的推出,SongSweep會在第一時間開始使用;在那之前,音樂App仍是唯一能刪除歌曲的地方。