隱私權政策
本應用程式「Hi 台語」(下稱「本 App」)的開發者尊重使用者隱私,並以「儘量不蒐集資料」為設計原則。本政策說明本 App 處理個人資料的方式。
1. 蒐集的個人資料
本 App 不蒐集姓名、電子郵件等可識別使用者個人身分的資料。選擇登入帳號時,僅保存 Apple 發行的匿名代號與隨機的帳號 ID(詳見第 6 節)。
- 不需要建立帳號。帳號登入(Sign in with Apple)為選用功能,不登入也能正常使用本 App。
- 除非使用者登入帳號並以 Plus 使用同步(詳見第 6 節),搜尋紀錄、收藏、閱覽紀錄與學習進度皆僅儲存於使用者本機,不會傳送至任何外部伺服器。
- 不會取得使用者的姓名、電子郵件、電話、位置、通訊錄等資訊。
- 例外僅有四項: 使用者主動按下回報按鈕時所傳送的資訊(詳見第 3 節)、付費流程與使用情形的匿名事件(預設啟用,可隨時關閉。詳見第 4 節)、App 內購買的紀錄(詳見第 5 節),以及使用者選擇登入帳號時的帳號資訊與 Plus 的同步資料(選用,詳見第 6 節)。四者皆不包含姓名、電子郵件等可識別個人身分的內容。
2. 網路通訊
本 App 為下載詞語與例句音檔,會向開發者營運的配送來源(Cloudflare R2)發送 HTTPS 請求。此通訊包含以下標準網路資訊:
- IP 位址(網際網路通訊所必須)
- User-Agent(OS 版本等標準標頭)
- 所請求的音檔檔名
上述資訊以 Cloudflare 存取紀錄的形式暫存。本 App 開發者不會出於識別個別使用者的目的查閱或分析這些紀錄。Cloudflare 的隱私政策請見 https://www.cloudflare.com/privacypolicy/。
使用者登入帳號時,以及登入後的 Plus 訂閱者同步資料時,本 App 會以 HTTPS 與開發者的伺服器(Cloudflare Worker)通訊(詳見第 6 節)。
即使使用者不下載音檔(辭典本體已內建於 App),亦未按下第 3 節的回報按鈕、已關閉第 4 節的匿名統計,也未登入第 6 節的帳號,本 App 仍會為確認 App 內購買的狀態,與第 5 節所述的 RevenueCat 通訊。除此之外不會發送任何網路請求。
3. 內容錯誤回報
本 App 有兩處一鍵回報按鈕: 學習分頁「認證700」學習卡片的「回報:這裡有誤」,以及查詢不到時出現的「找不到?回報這個詞」。僅在使用者主動按下這些按鈕時,本 App 才會為了修正辭典內容的錯誤、並掌握尚未收錄的詞語,以 HTTPS 將下列資訊傳送至開發者的伺服器(Cloudflare Worker)。本 App 不會自動傳送,也不會於背景傳送。
傳送的資訊,僅限以下項目:
- 辭典項目 ID(entry id)
- 回報對象的漢字、詞語(例: 「茉莉」。查詢不到的回報則為當時查詢的詞)
- 來源標籤(例: 「cert700」、「missing」)
- App 版本(例: Taigi 2.1.0 (6))
- 作業系統版本(例: iOS 18.5)
不會傳送的資訊:
- 姓名、電子郵件、電話號碼、位置資訊、通訊錄
- 照片等使用者內容
- 使用者 ID、裝置 ID 等識別碼
IP 位址會由 Cloudflare 為了速率限制(防止濫用與連續重複傳送)而暫時處理,但不會存入資料庫。
傳送的資料儲存於 Cloudflare D1(資料庫),通知開發者的郵件則透過 Resend(郵件寄送服務)發送。用途僅限於修正錯誤的內容,不會用於識別個人,也不會用於追蹤。由於回報內容不含可識別個人身分的資訊,本 App 不設定保存期限,將其作為辭典的修訂紀錄持續保存。另因回報中沒有可判別傳送者的資訊,無法就特定使用者的回報加以篩選刪除。
依 Apple App Privacy 的分類,上述屬於「診斷(其他診斷資料)」與「使用資料(產品互動)」,且皆為「未與您連結」、「不用於追蹤」,用途為「App 功能」。
另外,「資訊」畫面的「意見、回報問題」與上述不同,是開啟裝置郵件 App 的連結。草稿中僅帶入 App 版本、作業系統與語言,是否寄出由使用者決定,本 App 不會自動寄送。若使用者寄出,開發者會為了回覆與改善本 App 而收到該電子郵件地址與內文。
聲調判定回報(學習的「唸出來」)
在學習的「唸出來」題目中,看著漢字唸出來後,App 會將您聲音高低的變化與官方音檔比對,判定聲調。錄音與判定皆在裝置上完成,錄音不會保存,也不會傳送。若覺得判定有誤,可按判定下方的「判定怪怪的?」,僅在您選擇「我唸對了,卻判不對」或「我唸錯了,卻判對」時,為改善判定的準確度,本 App 才會將下列資訊傳送至與上述回報相同的伺服器:
- 聲音高低的變化(每 10 毫秒一筆、以您平常音高為基準的差值所組成的數列),以及該基準音高(Hz)
- 畫面上顯示的判定(三級)、各音節的提示,以及您選擇的回報內容
- 出題的詞(辭典條目 ID、漢字、台羅拼音、示範音檔名稱)
- App 版本、作業系統版本
不會傳送錄音本身,也不含使用者 ID、裝置 ID 等識別碼。IP 位址的處理方式與儲存位置皆與上述回報相同(不寄送通知信)。由於無法得知是誰傳送的,無法挑出特定使用者的回報加以刪除。
依 Apple App Privacy 的分類,聲音高低的數列屬於「使用者內容(其他使用者內容)」,其餘與上述回報相同,屬於「使用資料(產品互動)」與「診斷(其他診斷資料)」,且皆為「未與您連結」、「不用於追蹤」,用途為「App 功能」。
4. 匿名統計(付費流程與使用情形)
為了了解大家在哪一步停下來,本 App 可以傳送極少量的匿名事件。想知道的有兩件事: 付費流程在哪一步中斷(例如有多少人打開了付費畫面、有多少人開始試用),以及剛開始使用時做過哪幾件事的人會繼續使用。
- 預設為開啟,可隨時關閉。於 App 內「資訊 → 改善協助 → 協助改善 App」關閉後即停止傳送,之後不會再送出任何資料;關閉之後發生的事情也不會回溯傳送。
- 傳送的內容: 步驟的名稱(App 啟動——用來作為計算比例的分母/開啟付費畫面/進入方案頁/開始試用/完成購買/未購買即關閉)、該步驟的入口、App 版本與作業系統版本。
- 傳送的內容(使用情形): 在第一次使用結束時,以及安裝後滿 7 天首次開啟時,各傳送一次由 5 個「有或沒有」組成的紀錄——是否播放過發音、是否加入過收藏、是否開啟過學習分頁、是否完成過一次學習、是否查詢達 5 次以上。不傳送次數、時間與查詢的詞語,只傳送有沒有做過。滿 7 天時傳送的,是第一次使用結束時記下的同一筆紀錄,並非 7 天內的累計。
- 不傳送的內容: 任何識別碼(不含安裝識別碼,也不含工作階段識別碼)、搜尋內容、辭典內容、瀏覽紀錄、購買金額。
- 由於不含識別碼,伺服器無法將同一台裝置的兩筆紀錄連在一起,只能看到整體的次數。基於同樣的原因,已傳送的紀錄無法針對特定使用者篩選刪除。
- 傳送目的地與第 3 節的回報相同,為 Cloudflare Workers 與 D1。IP 位址僅用於速率限制,不會存入資料庫。
- 不使用任何第三方分析服務,也不會用於廣告或跨 App 追蹤。
依 Apple App Privacy 的分類,上述與第 3 節相同,屬於「診斷(其他診斷資料)」與「使用資料(產品互動)」,且皆為「未與您連結」、「不用於追蹤」,用途為「App 功能」與「分析」。
5. App 內購買與訂閱
為判定 App 內購買(買斷與訂閱方案「Plus」)的狀態,並讓同一筆購買日後也能在 iOS 以外的版本使用,本 App 會將購買紀錄傳送至 RevenueCat(購買管理服務)。付款本身由 Apple 處理,開發者與 RevenueCat 皆無法接觸付款資訊。
在網頁上購買 Taigi Plus 送給他人時(例如「請家人送我 Plus」的連結),付款由 Stripe 處理。付款時輸入的電子郵件地址等資訊依 Stripe 的隱私權政策處理,開發者不會接觸卡號等付款資訊。購買紀錄以該請求專用的隨機 ID 記錄於 RevenueCat,不與付款人的身分連結。詳見使用條款。
- 傳送的內容: App 內購買的紀錄(商品 ID、購買日期、到期日、商店所在國家或地區、Apple 交易 ID 等由 Apple 發行的資訊),以及 RevenueCat SDK 為每台裝置產生的隨機匿名 ID(登入帳號後改為帳號 ID,詳見第 6 節)。
- 不傳送的內容: 姓名、電子郵件、付款資訊、廣告識別碼(IDFA)、供應商識別碼(IDFV)。
- 傳送時機: 購買時、回復購買時,以及於啟動時等確認購買狀態時。
- 用途: 判定應開啟哪些已購買的功能,以及統計營收、訂閱人數與解約情形。不會用於廣告或跨 App 追蹤。
- 購買紀錄於判定購買狀態及統計所需期間內,保存於 RevenueCat。如需刪除,請透過第 12 節的聯絡方式與我們聯繫。
於 Apple 的 App 隱私權分類中,屬於「購買項目(購買紀錄)」與「識別碼(使用者 ID)」,兩者皆為「與使用者身分連結」、「不用於追蹤」,用途為「App 功能」與「分析」。匿名 ID 不含姓名等資訊,但因其在同一台裝置上固定不變,且與 Apple 交易 ID 一同傳送,故申報為「連結」。
6. 帳號登入與同步
為了讓在一台裝置上(或在 Android 版、網頁版)購買的 Plus 訂閱也能在其他裝置上使用,並在裝置之間同步資料,本 App 提供選用的帳號登入(Sign in with Apple),位於「資訊 → 帳號」。不登入也能正常使用本 App。
帳號登入
- 傳送的內容: Apple 發行的 ID 權杖(ID token)。開發者的伺服器(Cloudflare Worker 與 D1)驗證後,僅保存 Apple 針對本開發者團隊發行的匿名識別碼(sub)。
- 不取得的內容: 不要求提供姓名與電子郵件;即使權杖中含有這些資訊,也不會讀取。
- 伺服器會另外產生一組隨機的帳號 ID(UUID)。登入後,這組帳號 ID 會取代第 5 節所述的隨機匿名 ID,作為 RevenueCat 的使用者 ID(App User ID)。
- IP 位址僅為速率限制而暫時處理,不會保存。
- 於「資訊 → 刪除帳號」刪除帳號後,伺服器上的帳號以及與其連結的所有資料都會刪除。
同步(僅限已登入的 Plus 訂閱者)
已登入帳號的 Plus 訂閱者,下列資料會與帳號連結,儲存於開發者的伺服器(Cloudflare D1):
- 收藏、詞單(包含詞單名稱與其中的詞語)、設為學習中的卡組
- 學習紀錄(每個詞語、各個面向的複習進度,以及複習紀錄: 哪個詞、作答評分、時間)
- 查詢過的辭典條目紀錄(條目 ID、原樣複製的詞目、閱覽時間、開啟次數)
傳送的僅有條目 ID、詞目、詞單名稱、時間與學習結果。輸入後未開啟的搜尋文字不會傳送。用途僅限於在使用者自己的各台裝置上顯示相同的資料,不會用於分析、廣告或追蹤。
- Plus 結束後資料仍會保留,重新訂閱時即可恢復。
- 刪除帳號時,這些資料會一併刪除。
- 登出時,裝置上的資料會保留。
依 Apple App Privacy 的分類,收藏、詞單與學習紀錄屬於「使用者內容(其他使用者內容)」,查詢過的條目紀錄屬於「搜尋紀錄」,帳號 ID 屬於「識別碼(使用者 ID)」(已於第 5 節申報),且皆為「與使用者身分連結」、「不用於追蹤」,用途為「App 功能」。帳號登入同樣屬於「App 功能」的用途。
7. 提供第三者
本 App 不會為了廣告或分析等目的,將使用者資料提供或販售給第三者。亦未植入任何廣告或追蹤 SDK。本 App 植入的第三方 SDK 僅有用於管理 App 內購買的 RevenueCat(詳見第 5 節)。第 3 節與第 4 節所述的傳送皆由本 App 自行實作。第 3 節僅在使用者主動按下按鈕時發生;第 4 節預設啟用,並可隨時於 App 內關閉。第 6 節的帳號登入與同步亦由本 App 自行實作,僅在使用者選擇登入時進行。
為營運上述回報功能、匿名統計、App 內購買管理、帳號登入與同步,以及音檔配送,本 App 使用下列服務提供者(次處理者):
- Cloudflare(Workers、D1 與 R2 之託管及儲存,包含帳號與同步資料)— 隱私政策
- Apple(Sign in with Apple 之登入驗證)— 隱私政策
- Resend(回報通知郵件之寄送)— 隱私政策
- RevenueCat(App 內購買之紀錄與購買狀態之判定)— 隱私政策
8. 當機回報
若使用者於 iOS「設定 → 隱私權與安全性 → 分析與改進功能」中啟用了「與 App 開發者共享」,Apple 可能會將去識別化的當機紀錄轉發給開發者。此共享由 iOS 系統設定完全控管,並非本 App 主動蒐集。
9. 兒童個人資料
本 App 無年齡限制,但如前所述不蒐集可識別個人身分的資料,故亦不會自 13 歲以下使用者處取得個人資料。帳號登入為選用功能,不登入也能使用本 App;登入時也不會取得姓名與電子郵件。回報功能亦不會要求輸入任何個人資料。
10. Android 版
本政策亦適用於在 Google Play 上架的 Android 版。除下列各點外,第 1~9 節的內容同樣適用於 Android 版。
- 登入(第 6 節)使用 Google 帳戶(沒有 Sign in with Apple),位置在「資訊 → 帳號」,可自由選擇是否登入。傳送的是 Google 簽發的 ID 權杖,開發者的伺服器驗證後,只儲存 Google 帳戶的識別碼(sub)。不要求姓名與電子郵件地址,權杖中即使含有也不讀取。登入後與第 6 節相同,帳號 ID 會成為 RevenueCat 的使用者 ID,在其他裝置購買的 Plus 也能使用。
- 沒有同步(第 6 節)。即使登入,Android 版的收藏、詞單、瀏覽紀錄與學習進度,也全部只存在使用者的裝置內。
- 刪除帳號可在「資訊 → 帳號 → 刪除帳號」進行。若已移除 App,也可以在申請刪除帳號的頁面提出申請。
- App 內購買(第 5 節)的付款由 Google Play 處理。傳送給 RevenueCat 的,是 Google Play 所發行的購買紀錄(商品 ID、購買日期、到期日、商店的國家/地區、購買憑證等),以及 RevenueCat SDK 在每台裝置上產生的隨機匿名 ID。購買綁定於 Google 帳戶,可透過「恢復購買」取回。本 App 不取得、也不傳送廣告 ID(Google 廣告 ID)。
- 回報(第 3 節)只有搜尋找不到時的「找不到?回報這個詞」。傳送的 App 版本與作業系統版本為「Taigi Android 1.0.1(2)」「Android 15」這樣的形式,不傳送裝置的機型名稱。沒有聲調判定的回報。
- 「唸出來」會請求使用麥克風的權限。錄音與聲調判定全部在裝置內進行,錄音既不儲存也不傳送。不允許的話,唸出來以外的功能照常可用。
- 「相機掃描」會用裝置的相機 App 拍下一張照片,再以 Google 的 ML Kit(文字辨識,辨識模型內建於本 App)在裝置內讀出文字。照片與讀出的文字都不會傳送。不過,ML Kit 為了診斷功能問題與了解使用情形,可能會將裝置機型、作業系統版本、App 版本、處理時間、錯誤代碼,以及每次安裝各自的識別碼傳送給 Google(ML Kit 的資料揭露)。因此 Android 版除了第 7 節的 RevenueCat 之外,也內建了 ML Kit。
- 匿名統計(第 4 節)與 iOS 版內容相同,可在「資訊 → 協助改善 App」關閉。
- 當機回報(第 8 節):若使用者在裝置設定中允許傳送使用情形與診斷資訊,經匿名化的當機資訊可能會透過 Google Play 分享給開發者。這並非本 App 自行蒐集。
- 在 Google Play 的「資料安全性」中,本 App 申報了購買記錄與使用者 ID(第 5 節,含登入時的帳號 ID 與 Google 的識別碼)、App 互動與診斷資訊(第 3、4 節),以及 ML Kit 傳送的裝置 ID 與診斷資訊(如上)。傳送時皆經加密,不分享給第三方,也不出售。
Google(透過 Google Play 發布與處理付款,以及以 Google 帳戶登入的驗證)的隱私權政策請見 https://policies.google.com/privacy。
11. 政策變更
本政策可能因法令或本 App 規格變更而修訂。重要變更將於本頁公告。
12. 聯絡方式
如對本政策有任何疑問:
- 電子郵件: noform.dev@gmail.com