Just My Life & My Work

Archive for the ‘教學’ Category

[iOS] 掃描QR Code和Bar Code

我以為還要去找第三方套件來用,一查網路才發現,從iOS 7開始,SDK已經內建有掃描條碼的API,我想會把這功能納入麾下是必然的,因為在生活中條碼無所不在,除了常見的用途如辨識商品(書籍、食品、識別證等)外,還能做非常有趣的應用(導覽、遊戲等)。

iOS 掃描QR Code和Bar Code

猜猜看可以掃到什麼?

現在就來學一下怎麼掃描QR Code和Bar Code吧!

(繼續閱讀…)

[圖解][iOS] 蘋果推播通知服務 (Apple Push Notification Service)

會使用手機的人都一定會接觸到推播通知!身為iOS App開發者三年的我,也只大概瞭解其如何實作,現在我要來揭開它詳細的運作原理與架構。這裡也不想花大篇幅描述太多細節,不是很聰明的我就用圖解蘋果推播通知服務 (Apple Push Notification Service)的方式來理解它!

Apple Push Notification Service00003

官方開發者文件已經說得非常清楚,然而會主動去翻來看的人並不多,大概是因為全部都是英文描述,加上十分詳細的說明,讓想要快速上手的人另尋其它網頁。上週幫朋友小A測試iOS後台推播,更進一步知道如何申請推播憑證,在此之前要先申請開發憑證!才知道iOS的推播還真的很「耐人尋味」。想起八月份的百貨公司案子,所使用的後台推播服務是被臉書收購的Parse,它讓我不必自製一個後台就能輕易地把訊息推播到裝置上!

(繼續閱讀…)

[iOS] 開發時設定網路速度

原本在公司就是使用非常快速的WiFi,自己在開發測試的時候顯然沒有網路慢的問題,然而因為開發的app是要給米國人使用,此時就要考慮米國網路環境問題,據說,米國網路環境不如台灣好⋯⋯

developer network2

(繼續閱讀…)

[iOS] 將影像截取為4×6或6×4

iPhone的相機規格性能相當好,以iPhone 6為例,它有800萬畫素,寬高比為3×4或4×3,我們想要讓拍的相片的寬高比變為4×6或6×4,該怎麼做呢?

crop image

對照圖

(繼續閱讀…)

[iOS] UITableViewController加上客製視圖

幾乎沒有在用UITableViewController的我卡住了,真不曉得為何一定要用UITableViewController?因為它限制太大,其實可以由UIViewController所取代。因為table view固定整個畫面,要設定其frame就不太容易,想要加上客製view也真是難⋯⋯

table view controller add subview - before

因為是拿他人寫好的專案來改,他用storyboard做好一切會員有關的頁面,前後流程都已經確定,甚至此頁面的class是繼承他自己定義好的基礎class,所以我才不會想要大費周章從UITableViewController搬到UIViewController!

(繼續閱讀…)

[Xcode][iOS] 除錯平台印出中文字

時常用Xcode除錯的工程師都知道,Xcode對中文字還不是很友善,因為除錯時印出的內容,中文字都會變成以\U為開頭的編碼,如:

\U900d\U9059\U6587\U5de5\U4f5c\U5ba4

儘管知道這是中文字,但實在很難確認這行代表什麼字啊⋯⋯

好在總是有解決方案,我強者同事阿宅,找到解法更發揚光大,讓任何人只要引用自訂Category,之後在Xcode除錯平台上必能如實顯示中文字!

(繼續閱讀…)

[iOS] Base64 編碼解碼 (Base64 Encoding Decoding)

先前已經研究果Base64編碼的原理,現在以iOS來實作看看⋯⋯

/**
 Theme: Base64 Encoding Decoding
 IDE: Xcode 7
 Language: Objective C
 Date: 104/10/16
 Author: HappyMan
 Blog: https://cg2010studio.wordpress.com/
 */
    NSString *plainString = @"HappyMan";
    
// Encoding
    NSData *plainData = [plainString dataUsingEncoding:NSUTF8StringEncoding];
    NSString *base64String = [plainData base64EncodedStringWithOptions:0];
    NSLog(@"%@", base64String); // SGFwcHlNYW4=
    
// Decoding
    NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
    NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];
    NSLog(@"%@", decodedString); // HappyMan

原來這麼簡單XD~

Base64 chart Base64 Man Base64 HappyMan

參考:Base64 Decoding in iOS 7+

[iOS] Code Signing 問題

我以為是因為安裝最新的Xcode 7,才會讓Provision遺失,後來經資深工程師提點,才知道原來是Provision過期,所以要重新過期,所以要重新喚醒下載使用。再來又發現Certificate也要一起更新下載使用⋯⋯

Provision deadline

No codesigning identities (i.e. certificate and private key pairs) that match the provisioning profile specified in your build settings (“iOS Team Provisioning Profile: *”) were found.

Xcode can attempt to fix this issue. This will reset your code signing and provisioning settings to recommended values and resolve issues with signing identities and provisioning profiles.

(繼續閱讀…)

[iOS][watchOS] 位元代碼 (Bitcode)

還沒看到有高人翻譯,所以我暫且稱之為位元代碼 (Bitcode),看來我被中國化了⋯⋯台灣用語應為位元程式碼!其實在WWDC 2015,Apple只是提到它,並沒有詳細介紹它架構與運作,謎樣地描述什麼是位元代碼 (Bitcode):

Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Connect that contain bitcode will be compiled and linked on the App Store. Including bitcode will allow Apple to re-optimize your app binary in the future without the need to submit a new version of your app to the store.

Xcode hides symbols generated during build time by default, so they are not readable by Apple. Only if you choose to include symbols when uploading your app to iTunes Connect would the symbols be sent to Apple. You must include symbols to receive crash reports from Apple.

Note: For iOS apps, bitcode is the default, but optional. If you provide bitcode, all apps and frameworks in the app bundle need to include bitcode. For watchOS apps, bitcode is required.

如果以圖示來描繪是:

bitcode

(繼續閱讀…)

[iOS] Facebook SDK 取得帳號資料

現代人已經離不開臉書,大部分的人每天黏在臉書獲取資訊與互動朋友,於是會有許多資料放在臉書中,因而成為其它服務平台的媒介,減少重複輸入個人資料的行為,於是一鍵登入我們很熟悉!同時方便使用者開發者

Facebook SDK login

這是Facebook SDK內建的按鈕樣式

(繼續閱讀…)

標籤雲