Just a Computer Graphics Studio & My Life

Archive for the ‘iOS’ Category

[iOS] 調整HTML中影像寬度 (Adjust Image Width in HTML)

有時候App畫面需要套用Web內容,你就會發現很神奇的地方,就是Web開發者說已經調整好寬度100%,可是在我們App中顯示就是有問題,像是貓咪的臉會被截掉⋯⋯

那到底是誰的問題呢?基本上我是認為Web寫好直接套用就要呈現期望的樣子,App這邊不需要特別設定什麼。

ios-%e8%aa%bf%e6%95%b4html%e4%b8%ad%e5%bd%b1%e5%83%8f%e5%af%ac%e5%ba%a6-adjust-image-width-in-html00001

不過呢⋯⋯也許App元件本身有問題,此時就要找出替代方案,總是有前人遇過類似的問題,google就對了!

(繼續閱讀…)

廣告

[iOS] 不要緩存網路資料

原以為已經解決AFNetworking會暫存資料的問題,第二次驗收還是被資安公司給退件,那麼只好使出一勞永逸的絕招!就是讓整個App網路資料都不要暫存資料,也就是說不只是針對AFNetworking,設定NSURLCache就能做到!透過模擬器追蹤Cache資料夾,打開Cache.db查看真的不再暫存撈回來的資料。

Disable AFNetworking Cache00004

可以看到追蹤模擬器資料夾會有個Cache.db。

(繼續閱讀…)

[iOS] DBAccess 資料庫

上次提到FMDB 資料庫,這次講解DBAccess 資料庫,我一個月前才研究,2016/6/23要講給同事們聽時,便發現DBAccess被Shark吃掉了⋯⋯

DBAccess Shark.png

(繼續閱讀…)

[iOS] 背景獲取 (Background Fetch)

 

背景獲取 (Background Fetch)可用在:有個情境是想在使用者開啟App前,就將所需要的資料從網路載入完畢,當使用者打開App後就會發現,顯示的資料都是最新的,而不用再重新整理來獲取最新資料。

前人教學得知有三件事情要做:

step1:

專案Capabilities設定Background Modes打開Background fetch

背景獲取 (Background Fetch).png

/**
 Theme: Background Fetch
 IDE: Xcode 8
 Language: Objective C
 Date: 106/06/06
 Author: HappyMan
 Blog: https://cg2010studio.wordpress.com/
 */
// step2
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
}
// step3
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
  NSLog(@"performFetchWithCompletionHandler");
}

若要測試是否能運作,在工具列操作Debug的Simulate Background Fetch,點下去後原本App在前景就會強制跑到背景,若有在performFetchWithCompletionHandler設中斷點,就會發現App會執行這函式。

背景獲取 (Background Fetch)2.png

至於觸發時機,就要看系統怎麼判定你的App要多久喚醒一次,若它發現使用者時常在晚上九點開啟你的App,也許系統就會在晚上八點五十五分喚醒你的App,於是你可以執行載入最新資料的動作。

參考:Background Modes Tutorial: Getting Started

[iOS] Cocoapods 多個 Target

有時候同一個專案(Project)需要建立不同的目標(Target),因為可以各自設定屬性狀態,讓code可以依據釋出版(Release)開發版(Debug)來運作。

cocoapod xcode target.png

此時若有使用Cocoapods來管理第三方套件

(繼續閱讀…)

[iOS] 版本號:Version和Build

一個有在更新版本的App,有時候需要判斷版本號,在Xcode中的設定有VersionBuild,有個別的用途,端視開發者怎麼定義。

Xcode Build Number2

那麼程式中如何取得這兩個值?

Version:在plist文件中的key是“CFBundleShortVersionString”,標識應用程序的發布版本號,和AppStore上的版本號保持一致。該版本的版本號是三個分隔的整數組成的字串。第一個整數代表重大修改的版本,比如實現新的功能或是重大變化的修訂。第二個整數表示修訂版本,實現比較突出的特點。第三個整數代表維護版本。

Build:在plist文件中的key是“CFBundleVersion”,標示(發布或者未發布)的內部版本號。這是一個單調增加的字符串,包括一個或者多個分割的整數。

To get App version:

NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

To get Build version:

NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

儘管有普遍的定義,還是能自己決定怎麼定義版本字串,像Build我就會用當天日期定義。

參考:How can my iphone app detect its own version number?自動更改建置號碼iOS项目中的version和build、。

[iOS] 拆掉和包裝套件 (Unarchive and Archive Library)

又到了要套用第三方套件的時候,一般而言都是找最「受歡迎」的GitHub開源套件,因為做得好大家有目共睹,還會給作者一顆星!不過在台灣的市場,要套Beacon SDK就得找台灣廠商,去年旅遊App套一個廠商的Beacon SDK,搞了一陣子的背景偵測有問題,現在購物App也要來套另一個廠商的Beacon SDK,這個廠商製作各種「可串接」套件都有些問題,這次當然也少不了啦XD~

回想三年多前iBeacon被Apple提出來至今,台灣市場總算熱絡了起來,可以回顧一下我先前撰寫的初探iBeacon

(繼續閱讀…)

標籤雲

%d 位部落客按了讚: