Wallet
錢包匯出的運作方式,從連接到排解問題。
連接
在 Exporter 首頁的錢包旁按「連接」,然後按「打開 Passes 資料夾」。面板會在 macOS 存放卡片的檔案夾 ~/Library/Passes 打開:按「選擇此資料夾」。接著選擇檔案存放位置,並按「使用這個資料夾」。
要選 Passes 檔案夾本身,而不是裡面的 Cards。Exporter 從 Cards 讀取卡片,旁邊的 passes23.sqlite 只為一件事:卡片簽發的那天,也是許多舊卡片唯一有的日期。
檔案放在哪裡
每張卡片一個 Markdown 檔案,全部放在同一個檔案夾,依日期和卡片種類命名:2026-09-17 united airlines SFO-EWR.md、2026-09-11 the sf database meetup.md。完全沒有日期的卡片就用它自己的名字(apple store.md)。直接位於個人檔案夾底下的檔案夾,例如 ~/Documents,裡面會產生一個 wallet-export 檔案夾;更深一層的,例如 ~/Documents/wallet,則照原樣使用。
會匯出什麼
卡片上勾選的每一張:登機證、火車票和客運票、活動票券、商店卡、優惠券和通用卡片。藥丸按鈕只是篩選清單:卡片(全部)、航班(含火車和客運)、活動、商店卡。
兩張會得到相同檔名的卡片,各自會加上一段來自 id 的短後綴,所以誰也不會覆蓋誰。取消勾選會在下次同步時刪掉它的檔案,重新勾選又會回來。
格式
一律是 Markdown:卡片的 front matter,一個標題和一行說明地點與時間,接著是卡片上原樣的欄位,卡片背面放在 Back 標題底下,最後是條碼的號碼。
檔案內容
| 鍵 | 內容 |
|---|---|
title, id |
卡片叫什麼,以及錢包給它的 id |
kind |
flight、transit、event、card 或 other |
date, date_source |
卡片對應的時間,以及它來自簽發方的日期、有效期限,還是簽發當天 |
organization, pass_type |
簽發方及其卡片類型識別碼 |
expires, voided |
何時到期,以及錢包是否已標記為已使用 |
coordinates |
場館座標,如果卡片帶有的話 |
Details 一節收錄卡片本身沒有顯示的 Apple 結構化欄位:航廈、抵達登機門、時區、票價艙等。Where 一節給出場館名稱。內容為二進位的條碼會直說,而不是把控制字元寫進檔案。
---
title: "United Airlines SFO-EWR"
kind: flight
date: 2026-09-17T18:20:00
date_source: relevant
organization: "United Airlines"
---
# United Airlines SFO-EWR
San Francisco (SFO) → Newark (EWR) · 17 Sep 2026
- FLIGHT: UA 274
- GATE: F19
- SEAT: 34D
## Back
- CONFIRMATION: GGCLMQ
日期,以及沒有日期的卡片
卡片依它自己的那天歸檔,用簽發方寫下的時區:23:25 從丹佛起飛的班機,是丹佛的那一天,而不是你閱讀所在地的隔天。較早的活動票券常常完全沒有日期,這些依簽發當天歸檔,檔案裡用 date_source: signed 標明。
其他語言的卡片
卡片可以把文字放在套件內的 pass.strings 檔案裡,卡片本身只留下鍵名。Exporter 會依你 Mac 的語言解析,於是票券顯示的是活動名稱,而不是 EVENT_NAME。
免費與解鎖
最近的 20 張卡片免費,而且一直免費。解鎖錢包會匯出其餘的(價格)。
同步與完整重新同步
第一次「立即同步」之後,只有當某張卡片變動時,Exporter 才會重寫它的檔案,最多每分鐘一次。登機門、座位和登機時間會在出發當天變動,而每次變動只會重寫那張卡片的檔案。
「完整重新同步」會先詢問,然後刪除 Exporter 寫過的卡片檔案,再把每張勾選的卡片重新寫一次。檔案夾裡的其他內容都會保留。
問題與排解
- 「這個檔案夾裡沒有卡片(請選擇資料庫中的 Passes 檔案夾)」:再按一次「連接」,然後選擇面板打開時所在的檔案夾
- 少了一張卡片:它在卡片上被取消勾選,或是免費的 20 張已用完。解鎖錢包後按「立即同步」
- 某張卡片的檔名裡沒有日期:它本身沒有日期,而錢包的資料庫也沒能讀取。請連接
~/Library/Passes本身,而不是Cards - 沒有卡號:卡號根本不在 Mac 上。錢包把支付卡放在 Secure Element 裡,Exporter 永遠看不到