Stark Wong 的個人開發網站
 



 此頁面:更新於 2014 年 3 月 4 日 18 時 55 分 15 秒,頁面處理需時 0.0062 秒
 網站內容版權所有(C)Stark Wong。頁面(不包括檔案)可自由連結。網站系統版本 1.21 (2014/3/4)

小熊來電通知不對任何小米裝置進行支援

由今天開始,所有使用小米手機(任何型號)的使用者均不會再在 Google Play 商店中找到小熊來電通知,我這樣做的目的是要維護 Android 系統生態平衡而對小米 MIUI 進行抵制的措施。

Android 系統本身含有一系列廣播事件讓各種應用程式可以視需要要求接收所需的事件,而對系統或私隱比較重要的廣播事件需要定義使用相關權限,也會在安裝時提示使用者需要相應的權限,由使用者決定是否繼續進行安裝。可能有人會覺得安裝時確認並不足夠,所以就有權限管理程式的出現。在 目前版本的 CyanogenMod 也有權限管理程式,而且是以 Opt-In 方式運行,也就是使用者要拒絕特定程式權限是使用者本身是清楚知道他在做什麼。但是,小米在 MIUI 中所引入的權限管理程式則是以 Opt-Out 方式運行,也就是預設所有第三方軟件都不允許使用權限管理程式所指定的權限,然而小米並沒有清楚告訴使用者有「權限管理程式」的存在,也沒有在第三方程式使用並拒絕操作時提示使用者,導致使用者向程式開發者投訴程式沒有效用,這就是目前小熊來電通知在 MIUI 系統所遇到的問題。

我在這裡非常堅決認為責任在於小米而並非開發者,而開發者亦無責任由於 MIUI 的問題而去買一部小米電話去看看如果把那個權限管理程式關閉,所以除非小米願意改善這方面的問題:
1) 初始安裝時詢問使用者是否開啟權限管理員並明確提示使用者如何在較後時間修改權限管理設定 2) 當第三方程式第一次被拒絕權限時需以清楚的方法通知使用者並提供方式讓使用者允許操作

在小米能做到這兩點之前,小熊來電通知會無限期將所有 (包括以後推出的) 使用 MIUI 的小米裝置剔出 Google Play 商店的支援清單,而對手動刷入 MIUI 到非小米手機的使用者的支援電郵也不會進行任何回應。

對於富經驗的 MIUI 使用者,你只需把 Build.prop 的機型改成非小米即可再次找到軟件並下載,當然你仍然要在權限管理程式將小熊來電通知加到白名單被啟用相關權限。

對於純因為便宜而購買了小米手機的一般使用者,你可以選擇不使用小熊來電通知或將小米手機賣掉再去買回一部使用真正 Android 系統的手機。

2013/12/17 補充:

有網友發現某些版本的 MIUI 在安裝時有一個名為 “Trust This App” 的選項,只要把它開啟就有可能給予完整權限,但還是同一個問題:預設是關閉的,在沒人告訴你那個選項有什麼用的情況下誰會去在安裝軟件前特別把那個選項開啟?如果是預設開啟的話使用者特意去嘗試新軟件時倒是有可能知道有危險而把那個選項關閉再繼續安裝。也有其他網友表示那個選項並沒有作用。

我把支援清單的句子劃掉並非指我取消了這項動作,而是因為某些原因 Google Play 商店中所列出的小米裝置似乎均不是目前流通的型號,所以事實上是我無法進行剔除,但我對此事的態度不變,仍然不會對無法使用而求助的小米用戶提供任何支援。

2014/4/21 補充:

更多補充見 http://www.studiokuma.com/skcf/xiaomi.html


撰寫於:2013/12/15 19:53:03 / 回應已關閉
流動巴士版圖(原版)終止開發通知

由於「流動巴士版圖NG」已進行測試一段相當長的時間,現在是時候原版退出歷史任務了,因為兩個版本同時存在除了令維護時增加工作量,亦限制了進行結構更改的可能性,所以原版流動巴士版圖將會於3月31日後停止操作並強制使用者使用NG版本。曾經進行捐款的使用者可直接在NG版本確認裝置以移除廣告。

至於流動巴士版圖NG將來的發展目前其實並不樂觀,因為程式目前主要依賴巴士公司所提供的路線資料,然而最近無論是九巴還是新巴都不斷在路線資料更新當天產生各種問題,導致我在更新路線資料時需要花上更多的時候進行手動修正,他們繼續這樣下去有朝一天可能會迫使我放棄整個專案,不過我可以保證至少在2014年6月10日前(這是接收最後一宗捐款往後計算一年)仍會繼續更新,至於若此日期後兩間巴士公司在資料準確性更加下降或更改網站主要佈局時我將無法保證我會繼續更新。如果我最終決定放棄專案,我會在一個月以前透過部落格宣佈,而程式 (Android 及 iOS 版本) 將於正式放棄日期當天立即下架,所有與此專案有關的程式、程式碼、資料及工具均不會考慮轉讓。


撰寫於:2013/12/15 19:29:18 / 回應:4
注意!請勿在 Samsung Apps 下載本工作室軟件

我是迫於無奈才寫出這個通知,請各位不要在 Samsung Apps 下載本工作室的任何軟件,因為都是已不再維護的舊版本,而我亦不會再更新該站的版本。

Q: 為什麼不再更新?
A: 因為 Samsung Apps 的發佈手續非常麻煩,而且有很多不利於同時在 Play Store 發佈時的限制

Q: 為什麼不直接把軟件下架?
A: 因為我無法把軟件下架!那是多麼爛的網站系統。我嘗試下架時網站提示我的軟件都在 Channel Promotion 無法下架,但卻不提供任何方法停止進行 Channel Promotion。我也嘗試直接刪除開發者帳號,可惜開發者帳號只能在所有軟件都已下架的情況下才能刪除。

Q: 你可以在軟件說明裡讓用戶不要下載嗎?
A: Samsung Apps 限制了必須在更新軟件時才能修改軟件描述,我也相信如果我更新軟件時在描述裡讓用戶不要下載的話,根本沒機會通過審核 (這裡在 Samsung Apps 留下的就一直會是上一個版本)

所以我在 Samsung Apps 裡現在的狀態基本上是失去控制,能做的就只有在這裡發通知而已…


撰寫於:2013/10/9 19:39:54 / 回應:7
如何讓 Java 的 GCM 接受更多全型字元

只要用 Java 傳送 GCM 的多語訊息時都一定遇到過一個問題:直接把中文寫進訊息裡送出,接收時會發現所有全型字元都消失了,網上一般找到的方法都是讓你以 URL Encode 把字元轉換後再加到訊息中,不過我最近嘗試用 php 送出 GCM 訊息時發現一個現象:

- 若使用 Java 傳送中文訊息,客戶端接收到的訊息是經 URL 編碼的 (例如「字」會收到 %E5%AD%97)
- 若使用 php 傳訊中文訊息,客戶端接收到的訊息直接是中文字!

顯然用 php 傳送的訊息才是正確的,因為不需要再經過 URLDecode 就可以直接使用了,那麼問題究竟出現在哪裡?GCM 的伺服器端程式碼是沒問題的,但問題是在於它用來製作 JSON 的 json simple 1.1,json simple 1.1 在遇到全型文字時並沒有依照 JSON 的標準將文字變成 \uXXXX 而是直接寫出去,這樣就令 Google 的 GCM 伺服器把全型文字全部丟掉。

要解決這個問題並不困難,只需要借助 Apache Commons 的 Lang 套件就可以解決,把它的 escape() 換成 StringEscapeUtils.escapeEcmaScript() 就可以解決一切問題。

不過,這樣改有什麼好處?只要知道 URL Encode 與 JSON Encode 對一個中文字的轉換就知道了,拿剛才的「字」為例,以 URL Encode 轉換後是 %E5%AD%97 (9個位元組),而 JSON Enocde 後則是 \u5B57 (6個位元組),每個字能節省 1/3 空間佔用對限制 4KB 的 GCM 訊息是相當有用的,更不用說一般符號會由佔用 3 位元組變成只用 1 位元組!

我在這裡提供已經修改好的 json_simple 1.1 的 jar 及原始碼,可於 http://d.pr/f/FLje 下載。


撰寫於:2013/10/9 19:28:30 / 回應:0
小熊來電通知 GCM 裝置資料庫轉移完成

小熊來電通知的 GCM 功能其實已經測試了好幾個月,但還是未能作為正式功能,最大的原因是壓力測試時發現 GAE (Google Apps Engine) 的資料庫儲存部份無法很有效率地儲存裝置 ID,導致儲存/載入超過100000宗資料時速度慢和很容易超過免費使用的資料庫讀寫次數。

現在藉由將資料庫部份轉移到獨立的 PHP+MySQL 空間,基本上可解決資料庫的問題,至於是否將整個 GAE 的 GCM 前台部份都進行轉移則需進行測試再決定。

但現在解決 GCM 用戶數的問題,就可以將 GCM 功能正式應用,預定只要啟動自動更新功能 (無論是選擇即時安裝還是特定時間安裝) 都會啟動 GCM 功能並使用極速攔截清單改進清單的即時性 (若系統不支援 GCM 時則會沿用現有方法定時檢查資料庫)。

相關修改會在未來幾次更新時逐一完成。若有任何意見歡迎發推或以電郵提出。


撰寫於:2013/9/29 23:41:44 / 回應:3
有關小熊來電通知的私隱聲明

因應私隱專員公署發表的報告,現作出如下聲明:

  1. 小熊來電通知是與攔截電話及短訊有關的軟件,相關的權限是必需的
  2. 小熊來電通知含有忽略手機聯絡人及檢查回報的號碼是否聯絡人,故需要讀取聯絡人的權限
  3. 小熊來電通知需要下載資料庫及網上回報功能,需要網路權限
  4. 小熊來電通知可以選擇從來電記錄中刪除剛被過濾的號碼,需要讀取及寫入來電記錄權限

其他的權限在 Play Store 的軟件介紹中已詳述

至於某電視台強調的讀取 IMEI 情況,今天更新的軟件版本已修改這個情況,最新版本的軟件並不會以 IMEI 作為裝置 ID。

總而言之,我還是那句話。我自己保證軟件本身不會讀取及上傳任何個人資料,所有權限都是因為你們所要求有的功能所以才需要的。你不相信的可以不用而找另一個軟件來用,我並沒有要脅任何人必須使用。


撰寫於:2013/8/13 23:37:59 / 回應:9
有關小熊來電通知的使用問題

各位使用小熊來電通知遇到問題的用戶,請先依照 FAQ (常見問題) 裡所列出的方式嘗試解決問題,因為很多時候都是因為系統本身或用戶安裝的軟件導致無法使用,需要用戶自己去尋找原因。

如採用FAQ的方法仍然未能解決問題時,請直接以電郵聯絡我(starkwong@gmail.com),我並不會每天都去看部落格的內容,而當留言多的時候我也無法在部落格中有效地回覆。

另外就是非常重要的一點,無論有否購買進階版,我所能提供的支援並不會有分別,我能幫助的話無論你有否購買我也會幫,但在我能力範圍外的問題,無論你是否有購買進階版我也無法解決。所以請不要為了想得到更好的支援而購買進階版。

請各位購買進階版前請先試清楚你是否真的需要進階版的功能,最近有用戶在根本不認識軟件功能的情況下購買了進階版,然後以傳媒強迫我退款的事件發生,我並不希望這種事件會再次出現。

***

另外有關小熊來電通知的支援限制,因為 Android 系統過於開放,以致有很多非官方修改及聲稱兼容 Android 的系統出現,我只能對完全基於原裝 Android 的系統提供支援,以下列出的系統則無法作出支援,也不保證軟件能正常使用:

- 小米 / MIUI
- 魅族 / Flyme OS
- 阿里雲OS
- OMS
- Blackberry BB10
- Android 4.0.9/4.1.9/4.2.9 (非正式存在的版本)

***

最近知道 iOS 的廣告電話通知軟件 Callers 由於蘋果的系統更新關係導致無法再維護,這是一件非常可惜的事情,感謝開發者一直的努力。

小熊來電通知理論上有可能移植至 iOS,但由於 API 及系統限制,是否值得開發目前還是持保留態度:

1. iOS API 裡有來電通知的 API,但只限於軟件在前景時才能收到
2. iOS 規定普通軟件只能在背景執行不多於10分鐘,否則會被系統強制關閉,當關閉後就無法再收到來電通知
3. 目前是有一些方法可以繞過以上的限制,但很有機會因使用不相關API而被拒絕通過審核
4. 掛斷電話的 API 為非公開 API,若使用就會被拒絕通過審核
5. 如果只服務越獄玩家的話客群應該不大 (可能是非常小)
6. 這一點是最重要的,我目前沒有 iPhone,只有一台第二代 iPod Touch,而模擬器又不支援電話功能,所以除非我有一台能跑 iOS 5/6 的 iPhone 在手,否則無法進行開發。問題是我值得為了不知道成功率有多大,也不知道能否放上 App Store 的軟件去買一台 iPhone 4/5 嗎? 老實說是不值得...


撰寫於:2013/6/29 07:23:46 / 回應:19
流動巴士版圖NG iOS 版正式發佈

在遭遇 iOS 開發者資格申請失敗和提交失敗後,流動巴士版圖NG 的 iOS 版本終於正式發佈!

iOS 版與 Android 版本的功能大致相同,但目前未提供以下功能:
- 我的最愛
- 導航功能
- iPad 及橫向檢視 (iPad 安裝後目前會以兼容模式顯示)

由於蘋果提供更新需要經過審核,故每次更新時會先有 Android 版本,iOS 版本會於幾日後更新。

此 iOS 版本會作 1 年測試,若廣告費能彌補 iOS 開發者資料的每年 780 港元時會繼續更新,否則會視情況再決定。

App Store 連結:https://itunes.apple.com/us/app/hong-kong-businfo-ng/id639562183


撰寫於:2013/5/4 19:48:46 / 回應:10
有關小熊來電通知的兩件事

最近小熊來電通知除了新增 GCM 外有另外兩個事情要說一下:

1. 關於 root 權限
我發現有些人對「root」這個名詞過於敏感,是否需要 root 權限的軟件就一定會盜取系統資料?事實是:

- 宣告 root 權限是 CWM 開發者 Koushik Dutta 的主意,目的是讓軟件的用戶知道該軟件需要 root 權限,而 Google 也很主動地在安裝時向用戶提示這個權限,然而目前定義 root 權限是非必須的,很明顯地惡意的軟件並不想用戶知道,又怎會主動定義這個權限?

- 對於沒有 root 過的裝置,即使軟件宣告了 root 權限還是沒法取得 root 權限的

- 對於有 root 過的裝置,當軟件第一次請求 root 權限時,系統的 SuperUser 程式會要求用戶授權,如果用戶拒絕時軟件就無法取得 root 權限;另外即使用戶永久授權了軟件的 root 請求,當軟件每次請求 root 權限時還是會顯示通知。小熊來電通知僅在啟用 root 方式的過濾動作 (用以檢查 root 可用性) 及進行需要 root 方式的過濾操作才會向系統請求 root 權限,除這兩個時間以外不會請求 root 權限。

- 即使用戶永久授權了軟件的 root 請求,用戶可隨時在 SuperUser 程式裡撤銷對軟件的授權

如果看完以上聲明仍然懷疑軟件會盜取系統資料,歡迎轉用其他過濾軟件。若認為自己手上有證據的話歡迎對質。

2. 關於 MIUI 的權限管理員
最近收到超過一宗報告說 MIUI 新版本的權限管理員並沒有將小熊來電通知列出,以致無法通過電話過濾權限。我寫小熊來電通知的時候是有正確定義所有需要的權限,MIUI 的權限管理員查不出來並不是我的問題,我不會、不知道、亦不應該對破壞 Android 相容性的系統特別支援 (再說我不持有也不打算持有小米手機)。根據其中一個報告的用戶所說,該權限管理員本身會出現一些不應該出現的軟件,也就是極大可能是權限管理員本身是有問題的,所以請發生問題的 MIUI 用戶向小米的技術團隊反映該問題,我對這個問題不會進行任何處理。


撰寫於:2013/5/2 19:30:51 / 回應:0
libOpenProtocol 更新

先說一下 libOpenProtocol 是什麼,那是給 Miranda IM 使用的協定插件框架,它本身並非一個協定,而是提供其他開發者一個簡單的方法 (使用 Lua 腳本) 為 Miranda IM 建立對特定網站聊天協定的支援。

目前 libOpenProtocol 支援的協定包括網頁版 QQ 及飛信,穩定程度算是可接受。不過昨天傍晚開始 QQ 在登入後沒反應,用抓封包軟件查出騰訊在請求好友清單時多加了一個名為 hash 的參數,直數值是以 QQ 號及 ptwebqq 經一堆位元運算及代入後算出的演算值,不過以那個函數的複雜程度,估計這個做出來就是要反制第三方軟件,況且本來沒有的東西就是不需要的吧…

更新版本下載可到 http://d.pr/f/bNai ,Lua 源碼已在下載中,libOpenProtocol 的程式碼稍後再更新到 Google Code 裡。



2013/4/19: 我懷疑在被騰訊針對?或許有其他人同樣更新得那麼勤快? 更新腳本
撰寫於:2013/4/17 23:47:49 / 回應:9
其他較舊內容請移步至舊部落格版面