[iOS] IAP 驗證發票 (IAP Verify Receipt)
四年前(2014年)實作過應用內購買 (In App Purchase),經歷讓人三溫暖的刺激感,終於跟偉大的後台工程師JK,攜手合作打造出給幼兒使用的iOS App,那可是要在美國運行的呢!
如今要再次研究Apple金流部分,IAP 驗證發票 (IAP Verify Receipt)是個必經程序,那我可以怎麼驗證購買真實性?
四年前(2014年)實作過應用內購買 (In App Purchase),經歷讓人三溫暖的刺激感,終於跟偉大的後台工程師JK,攜手合作打造出給幼兒使用的iOS App,那可是要在美國運行的呢!
如今要再次研究Apple金流部分,IAP 驗證發票 (IAP Verify Receipt)是個必經程序,那我可以怎麼驗證購買真實性?
在Swift剛釋出沒多久,我就研究過如何在同專案整合Objective C和Swift。文章:
儘管還是傾向以Objective C來開發產品,然而Swift的發展日趨重要,不過我大膽推測,就算Apple再怎麼強推Swift,十年內Objective C領導地位依然屹立不搖!為什麼呢?實際接觸4年Swift後,發現Swift變化多端,若猶豫要學Swift還是Objective C可以參考:要學Objective-C還是Swift?。
現在想要混編Objective C、Swift、C/C++,應也不是問題~
在Xcode中使用Breakpoint來debug是非常平常的事情,優秀的我們都能從Breakpoint來得知上下文狀態,如各個變數值。有時候崩潰(Crash)來得突然,Xcode沒有提供詳細的Crash訊息,像是我這個例子是:存取Empty Array。
此時例外中斷點 (Exception Breakpoint)就非常好用!
在研究所時代有旁聽機器學習課程,當時有親自操作SVM來產生model,可參考最近七年度以來一直很夯的文章:支持向量機器 (Support Vector Machine)。此時想要在iOS上使用SVM model要怎麼做呢?好在Apple釋出轉換model工具,再配合2017年釋出的Core ML,就能輕易在iOS上使用該model。
.
在此跳過轉換model的部分,直接進入套用已轉好的Core ML Models。不管你是阿貓還是阿狗做出來的model,都能透過Apple的轉換工具變身為飛天阿貓阿狗給App使用XD~
實在不曉得怎麼命名這篇技術文章,其實就是想要呼叫Web Service來取得資料,跟我過去平常使用的方式不太一樣,所以就特別來一篇記錄,未來就直接參考囉~
後台工程師特別使用x-www-form-urlencoded來呼叫此API,怎麼不跟之前一樣使用raw呢?下次來拷問他XD~強迫我一定要學新的實作方法!
最近要做穿戴式裝置的App,需要研究Apple Watch如何使用加速度計 (Using Accelerometer)。
三年前(2015年)幫公司製作比特幣查詢用的Watch App,已有開發經驗遇過一些坑,照理說能馬上迎刃而解才是,不過大腦卻沒能及時反應,只好上網打關鍵字求解!
問題:
error: WatchKit Extension doesn’t contain any WatchKit apps whose bundle identifiers match “com.happy.watch.watchkit". Verify that the value of WKAppBundleIdentifier in your WatchKit Extension’s Info.plist matches the value of CFBundleIdentifier in your WatchKit App’s Info.plist.
想開發Watch App,需要申請三個ID:
這三個ID逐一依賴,怎麼說?3依賴2,2依賴1,缺一不可哪~
已經開發iOS App超過五年的我,在宣告Property Attributes一直以來都是用nonatomic,尚未使用到預設的atomic。
@property (strong, nonatomic) UIWindow *window;
現在有個情況是有好幾個Thread有機會同時存取(set和get)同一個Property,此時就有必要使用atomic。可是了解後發現,atomic不能保證我存取的值是正確的,到底是怎麼一回事呢?
Info.plist中有些設定令人搞不清楚,項目Bundle name 和 Bundle display name看起來差不多,可是實際功用卻不相同!
Key的名稱分別如下:
“CFBundleName" = “HappyHeart";
“CFBundleDisplayName" = “HappyHeart";
那麼兩者差別為何?
Bundle name會出現在像詢問權限:
若我沒有填寫,則預設為Target名稱「TestDeviceSDK」。
Bundle display name則會顯示在桌面上App的名稱。
此兩者我目前都設定一樣的字串。
繼使用 Facebook SDK成功後,接下來實現使用 Facebook SDK 登入。
想要使用Facebook 登入,首先要下載 Facebook SDK 及建立申請 Facebook App,詳情請看文章使用 Facebook SDK。
HappyMan・迴響