
話說 Apple 在 2017/4/18 的時候推出 XCode 8.3.2(搭配的依舊是 iOS SDK 10.3),最近不知道那個筋不對,想把超過半年以上沒異動的 app 專案從 XE8 轉上 Tokyo 版本,既然 Delphi 用最新版,當然 macOS、XCode 就順手更新到最新版本,順便測試看看有沒有甚麼問題~
國內幾個主要的論壇或是 FB 都沒看到有人提出什麼問題,對岸雖然有提出已經碰到的問題,但似乎並沒有讓人感受到無法使用下去,於似乎就'想說上吧!

話說 Apple 在 2017/4/18 的時候推出 XCode 8.3.2(搭配的依舊是 iOS SDK 10.3),最近不知道那個筋不對,想把超過半年以上沒異動的 app 專案從 XE8 轉上 Tokyo 版本,既然 Delphi 用最新版,當然 macOS、XCode 就順手更新到最新版本,順便測試看看有沒有甚麼問題~
國內幾個主要的論壇或是 FB 都沒看到有人提出什麼問題,對岸雖然有提出已經碰到的問題,但似乎並沒有讓人感受到無法使用下去,於似乎就'想說上吧!

基於客戶端的需要,客戶問說如果手上有電子發票,可不可以讀出上面的發票號碼、金額等等的資訊呢?
像這張
就過往的認知與目前大部分發票相關 App 做出來的功能,應該都是要「掃描」QRCode 的部分才可以,那如果已經是圖檔了呢?再掃一次?這樣好像有點遜...
如果手上有 100 張圖檔,就要再重新「掃描」100 次,這....應該會被客戶打吧~
記得許久以前在玩 app 的時候,delphi 寫的 app 就可以透過「條碼掃描器」來讀取 QRCode 的資訊,詳見

上週 K.Top 網聚,聊天的時候其他先進提到 DX10.1 編譯出來的 size 變小了,話說我是不太相信啦,猛然一查 blog 竟然有快一年沒更新了,不是不想更新,只是這幾版好像沒有太多亮點,加上台灣也只剩線上研討會,不像以前都會辦實體的發表會、技術研討會...弄得小弟我也有點疲乏了
既然其他先進有提,那就把早就裝好的 10.1 Upd2 打開來瞧瞧吧,測試案例還是沿用之前的那個 app
以下是比較資料
| 版本 | apk size |

玩 app 這麼久,其實沒有想過這個問題,雖然在 Windows 的世界裡已經實現過簡繁轉換了,但到 app 之後 倒是就忘記了,沒想到「需求」還是會自己找上門啊...
這個需求第一次被提出來的時候,想當然爾,不是就把 Windows 那套搬來就好嗎!而且現在是 Unicode 的世界,直覺想應該不困難才對,沒想到頭洗下去才發現世界真的不一樣~
先回頭看一下在 Windows 的世界,我們可以怎麼做?

只能說苦命的我們...
趁著有個短暫的空檔,把 Mac 環境先升級到了目前的最新版 OS X EI Capitan 10.11.1 + XCode 7.1
配上 Delphi 10 Seattle + ID 30398 的 PAServer Hotfix
手機的部分則是有兩支做測試
iPhone 5S + iOS 9.1

騰訊地圖之前沒用過,不過由於在大陸地區沒辦法用 Google,所以勢必得用其他方案替代,騰訊地圖應該就是其中一個選擇...
在投入研究之前,由於之前撰寫行動裝置相關的功能,幾乎都會考量跨平台的問題(android、iOS),因此作法上優先考慮要能通用,解決方式不會綁定特定平台的寫法,除非真的找不到解決方式,才會依據各平台去撰寫,比如之前的 GCM、APN...
這次也是一樣,由於之前有使用 Google Map 的經驗,因此想說騰訊地圖應該也有比照提供 Web api 才對,果不其然,在下述路徑可以找到相關說明及範例
http://dev.map.qq.com/doc/example.html
這次要演示的,是如何透過手機定位,並將騰訊地圖顯示在目前的位置,手機如何定位(取得經緯度),在 Delphi 中再容易不過了,只需要置放一個 TLocationSensor 就可以了,這部分就不再多說明。但取得經緯度後,如何要求騰訊地圖來配合呢?其實這部分也很容易,可以透過載入一個動態撰寫的 html,就可以達到這個效果,以下是 html 的內容

原本以為只有 Delphi 4~Delphi 2006 的程式有問題,但是經過這幾天反覆找解法後,發現實際上 Delphi 2007~Delphi XE8 終究難逃 Win10 輸入法毒手。咦...之前不是說是誤會一場嗎?唉,這就是這個問題難處裡的地方,只能說之前的測試程式涵蓋方式不夠廣泛
這次好好整理了一下測試程式,而且完全是在 Delphi 2009 以及 XE8 手工打造,沒有任何專案移植或是複製貼上的程式碼,結果都是一樣的...form 開啟來可能會被之前的 form 蓋住,
先開啟主畫面(此時輸入法已經切換為倉頡)
按下 button 開啟 form1
再次按下 button 開啟 form3(以 show 的方式)

測試環境:Windows 10 Enterprise Insider Preview Build 10130
受測 Delphi 版本:Delphi4、Delphi5、Delphi XE3、Delphi XE6、Delphi XE7、Delphi XE8
上述 Delphi 版本均有編譯出 EXE,確認均有此一問題存在,可以合理推測所有 Delphi 版本均同
狀況描述
(1)兩個 form,各放一個 edit

本來想說 GCM 的部分前面已經寫過粉多次了,不過既然有網友提問是否可以提供不需要 java code 的 sample project,那麼就乾脆一次大放送,把接收/發送一併寫在同一個 sample project 好了。
sample project 置放於此

話說 XE8 的 What' New 內提到
New in XE8! MapView component for mobile platforms (iOS and Android) supporting platform specific interactive mapping libraries (respectively, by Apple and Google)
意思是 XE8 在 mobile 的環境提供一個新的 Map 元件,除了可以支援互動,還分別對應原生平台使用之 Map(Google Map 或 Apple Map)
感覺好像粉強大,趕快來試看看吧~
以 Delphi 提供的 Sample Demo - Map Type Selector 作為測試標的

正當 XE8 app 上路一切都沒問題了之後,今天同事突然告知他的手機使用 app 時,在登入畫面出現一個錯訊
之前從來沒有看過這個畫面,安裝過這麼多台手機也沒發生過,這到底是怎麼了?!
同事提供的線索:手機是小米 2S,android 5.x,沒有 Google play
唯一可能的兇手就是後者(沒有 Google play),因為 app 在登入的時候,會馬上要求去做 GCM 的註冊,但在註冊之前,程式會先檢查有沒有支援 Google play service,如下這段

在 iOS 上遇到的升級狀況遠比在 android 的部分多的多了,主要部分有兩個
1.XE8 變更了 iOS Provisioning 的設定方式,雖然變得更人性了,但是卻把之前設定過的值通通丟掉,因此這部分得重新設定才能 compiler 並將 app 發佈到實機上做測試
2.更令人驚恐的是,好不容易完成上述第一點,也發佈到實機上了,結果一執行 app 馬上閃退
上述狀況不只在一個 app 轉換時發生,至少有三個以上,因此可以說是普遍現象...當時真是叫人無法接受啊...
首先說明第一個 iOS Provisioning 部分,這次感覺 EMBT 有把獻上說明文件作的更完整些了,雖然...