顯示具有 iOS 標籤的文章。 顯示所有文章
顯示具有 iOS 標籤的文章。 顯示所有文章

evernote export to apple notes

過去都是用 Evernote 很長一段時間,但我唯一使用 Evernote 大概也就是筆記,還有些簡單的紀錄,剛開始還有在使用 web clip 功能,後來發現 web clip 會讓搜索結果變得很複雜,真正想找到的筆記反而都不在搜索結果前面,最終還是把 web clip 放到 pocket,並且後來 Evernote 功能越來越複雜,90%以上功能都是我不需要的,也因為這些功能讓整體變得更複雜,尤其是 iPhone 上的介面,在 5s 內容的可視區域真的小到不能忍,只是想要單純的筆記在使用 Evernote 讓我感到負擔沈重...orz,難怪 Evernote 會跳出來說所有用戶平均使用我們功能的 5%,但是每個人的 5% 都不一樣(總感覺這句話似曾相似XD)

由於很巧的我所用的裝置都是 apple 的,所以後來嘗試一段時間後就改用 Apple Notes,iOS 9 後 Apple Notes 做了很大幅度的升級,提供了匯入各種不同的格式以及可以畫畫等功能,並且球員兼裁判的 iCloud 可以做到無縫快速的同步 iOS、MacOS 平台,雖然現在同步還是很掰咖,很常發生同步錯誤造成產生兩個 notes,以及離線同步常常發生問題等,但就以我的基本的筆記功能還算堪用,比起 Evernote 來說簡單很多。回到資料問題... Evernote 原本的筆記怎麼辦?還好有人寫了這一段腳本來把 Evernote 內容同步到 Apple Notes 來,使用方式也很簡單:

  1. 打開 Evernote MAC app
  2. 選出你從 Evernote 要同步到 Apple Notes 的 notes
  3. 打開這腳本,然後按下執行,完成後會跳出提示


How to transter form Front-end developer to Client-side developer

最近在準備整理該如何教一位 Front-end developer 快速上手成為一位 Android/iOS Developer,以下整理個幾個同事問我的問題:

記憶體管理

但是 objective-c arc/java gc/ swift 雖然看起來差不多(不需要去處理 retain count/ pointer),但還是有很多最佳實踐方式不同。

看的到,选不到

在web上只要看得到的元素都可以用 selector 找到然後修改,在 native 上卻是要找到相對應的記憶體才可以修改,不管是 xcode 還是 android studio 之類的 IDE 對這方面其實都有很強大的索引功能,只是需要花點時間習慣。

档案碎片化,找不到到你是哪個檔案

一般 web 開發可能全部寫在一個檔案或分成幾個 js 載入,看先後順序就知道能不能用,native 上使用的語言都比起 js 看起來更結構化,如果習慣 AMD 架構的 js 可以更快上手。


HTML/CSS/JS 好像被組合起來了,想要調整樣式找不到位置

native 所提供的 SDK UI 組件可以看做是 web component,不論在 iOS, android 都有提供大多數基礎的 UI 組件,但這些組件也都會和原本系統的 UI 樣式相同,因次該如何 hack 他就會成了你非常常去查詢的問題,大多數原生的組件都有提供非常可靠的客製化功能,遠遠比起自己重寫可靠。


不知道該從哪裡切入?

這問題應該是最常聽到,就如同作事一樣,如果沒有目標,作起事來完全沒效率,關於這點目前是參考 Mozilla 相同的作法,每個版本都會有些小 bug,小如圖片放錯、顏色調整,這類的 bug 就很適合給新手來切入,順便在了解過程中就一併開始看架構,就像寫書法一樣,在開始創作前肯定有臨摹的階段。


環境、環境、環境

web 算是個相對成熟的架構,對前端來說不論你用 nginx, apache, nodejs, python, ruby, go 都可以很方便的幫你起一個 server 來開始工作,甚至只要有瀏覽器就可以馬上開始工作,環境這塊還是建議交給專業的來,請專業的人先幫你配置好,或有文件可以參考來靠自己建立起來,這就依賴時間緊迫程度來變動,簡單還是一句話「讓專業的來」。


專業分工

我認為大多數的前端都是對於畫面有一定程度的美感,對細節體驗有一定程度的要求,尤其是有「圖層」的觀念,從這方面出發我認為陣痛期是最短的,因為你負責的還是 UI 相關的事,底層的事可以讓原本熟悉框架的專業人士來負責,一來有成就感(作完馬上可以看到畫面,別再老是看 Hello world!),二來在前端的追求細節精神可以連貫下去。如果不小心寫出興趣還可以往圖學發展XD


Multiple thread

這就牽涉到語言的特性,需要搞清楚點觀念,只要作過 UI 的都知道,main thread 絕對不要處理任何會卡住的事情,任何 http request, 大量運算處理都要做 async 處理,這道理就像你做一個 web application 但是你絕對不會等到所有東西都載入完成後才出現畫面。



最後我想要說的是,最近身邊、老闆總是在談 native 吃掉 web 這回事,我本身是完全不認同,web 不會消失,市場也不會縮減,目前唯一可以跨平台的方案就是 web ,只是他在手機上的方式還不比在 pc 上成熟,效率上無法跟 native 相比,我認為最大原因就是歷史包袱,ios 只需要考慮在 iphone 的使用狀況,不需要考慮在 android, windows phone, browser 上跑起來的狀況,自然可以效率高許多,就像一把瑞士刀肯定不比菜刀好切菜。

多學一種技能也是挺有趣的,可以讓你有不同觀點來切入一件事情,思考上也可以更靈活,在我看來換個語言、平台都是差不多的,就像你會用中文罵「幹」會用英文罵「Fuck」一樣,沒什麼了不起,熟能生巧罷了。多學一點對自己肯定不會吃虧的,如果真的不知道該從哪種語言、平台開始,就找的自己看順眼喜歡的吧,我相信再過不久前端(Front-end) 就會變為客戶端(Client) 或終端工程師跑出來,把控這與使用者接觸的最後一哩路。

html5 video player full screen issues

這問題被問許多次,就是 iPhone/iPad 上的影片是不是可以不要全畫面播放,這問題其實官方已經寫的很清楚,以下節錄至 Safari developer

Optimization for Small Screens

Currently, Safari optimizes video presentation for the smaller screen on iPhone or iPod touch by playing video using the full screen—video controls appear when the screen is touched, and the video is scaled to fit the screen in portrait or landscape mode. Video is not presented within the webpage. The height and width attributes affect only the space allotted on the webpage, and the controls attribute is ignored. This is true only for Safari on devices with small screens. On Mac OS X, Windows, and iPad, Safari plays video inline, embedded in the webpage.

Note: Prior to iOS 4.0, iPhone and iPod touch did not play audio inline. Audio was presented in full-screen mode. Audio plays inline on iOS 4.0 and later, on all devices.

最後這段重點就是,為了給小畫面最好的瀏覽品質,所以在 iphone 使用 mobile safari 或 webview(APP 中) 會用全畫面播放,而 iPad 因為畫面夠大,所以可以提供使用者/開發者選擇是否全畫面播放。

但是在 App 中還是有例外,因為小畫面無法非全畫面播放這件事情在 iOS SDK 中是一個參數,可以提供給開發者修改,在 webview 可以修改「allowsInlineMediaPlayback」參數,預設 iPhone 設定為「NO」,也就是強制播放影片時都是全畫面播放,如果設定為「YES」就可以在 webview 中直接播放影片,交給開發者自行配置。

相關連接 http://stackoverflow.com/questions/5054560/can-i-avoid-the-native-fullscreen-video-player-with-html5-on-iphone-or-android https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html

iOS AFNetworking error 1005

iOS AFNetworking error 1005

Error Domain=NSURLErrorDomain Code=–1005 “The network connection was lost.”

When you got this message can restart your simulator to solve this problem.

iOS7 safari mobile minimal navigation bar

在手機上畫面基本上已經不大,又被討厭的網址列、上一頁、下一頁 等按鈕佔去了上方與下方一部分真的很礙眼,還好 iOS7 有解決了這件事,就是在 head 內的 viewport 加上 minimal-ui,如同下方的方式:

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, minimal-ui" />

加入 minimal-ui 前,上方的網址列以及下方的按鈕列都存在


加入 minimal-ui 後,上方的網址列以及下方的按鈕列消失,旨剩下 page title


點擊上方的 page title 後網址列、按鈕列才會出現,中間那塊加上灰色遮照來做區隔


iOS restore and upgrade

相信很多人都有升級 iOS7,並且在 beta 測試時就搶先使用幫助 apple 來 debug,這種就甘心的情操實在很偉大,但是使用了 beta 版本後卻沒辦法升級為正式版實在是很嘔的事,當然你可以再去開發者頁面下載最新的 build 來重刷,或者可以直接靠 itunes 來進行升級,以下就介紹如何使用 itunes 直接升級,只需要幾個步驟:

step1. 準備一條線連接電腦,一隻安裝了 beta 或舊版本的手機
step2. 把手機關機,把線接上手機,並且不要連接著電腦
step3. 持續按著 home 鍵(直到說要放開前請持續按著)
step4. 把線接回電腦,等到看到 itunes logo 再把home 鍵放開
step5. 按照 itunes 的步驟完成

Inside salon #2 千萬下載等級遊戲開發商 Orange Nose Studio 創業與中國經驗分享 - 重點整理

我是個不太常在手機上玩遊戲的人,大多會玩遊戲就是為了打發時間,而 Orange Nose studio 出的遊戲完全是主打我這族群,無腦的遊戲有助於紓壓(無誤)。

這邊來重點整理一下這次所聽到 Leon 所談的重點,省略前面自家的火力展示,以下未依照演講時順序,未必完全與演講用字相同,僅以當時筆記為主

  • 成功的原因
    • 找到對的TA (不玩遊戲的人)
    • 找到對的市場,市場一定要夠大,並且具發展性
    • 30 秒測試
      • 用 30 秒對一個沒用過的使用者測試,30 秒如果沒辦法提起興趣那這個人就不是你的 TA或你設計根本有問題
      • 測試時什麼都不要說,在旁安靜的觀察使用者
      • 偷偷跑去手機店把要測試的 App 安裝到展示機上,然後躲在旁邊觀察,最好還可以先把 App 打開後再去旁邊觀察,確保使用者一定是看到這 App(先前我自己在寫 Android 也想過這方法 XD,這也許是個 business model)
    • 免費
    • 同時間在多個平台( ios, android )上架,所以類似 cocos2d 這類的 framework 會是你的好夥伴
    • 病毒式成長
      • 前期還是需要打廣告增加曝光量,但前期購買下載量 CP 值不高
      • 廣告再多還是比不上病毒行銷的擴散速度
      • marketing 再怎樣強還是比不上產品好
      • app + market = viral
    • 好的評分( rating )
      • 如果評分低於 4 顆星那肯定是產品出問題了,有 1顆星出現那肯定是會有 crash 或無法正常進行遊戲
  • 做一個好的遊戲
    • 選一個屬於你的市場
      • 不一定要做的特別快,但一定要想清楚
      • 維持在高的評分( rating )
      • 別只能跟電腦玩,加入社群元素可以發展更快
        • e.g. race cars vs race with friends
          • race cars - 那市場限定在熱愛賽車的人
          • race with friends - 市場肯定比 race cars 大,重點是妹也會玩
      • 最好是免費的
        • 免費市場肯定比付費市場大
        • 免費第一名下載量大約等於付費的 10 倍
      • 跨平台 ( ios, android )
    • 了解你的市場
      • 觀察同一個市場上其他優秀 App 怎麼做
      • 觀察這些優秀 Apps 的留言,看到其實哪邊還可以再改進,使用者喜好
      • 觀察市場的大小
      • 詢問自己,是否適合這市場
    • First love in 30s
      • 使用前 30 秒幾乎是掌握會不會再使用下去的關鍵(很多使用者下載後是不會開啟 App 或不了解馬上刪除)
      • Icon, title 就是吸引用戶的第一步,不好看的 icon 下載機會大幅降低
      • 如果 30s 測試無法成功通過那就表示這 App 有問題
      • 通過 30s 測試後詢問使用者
        • 了解 or 疑惑
        • 是否對某個片段有映像 or 失望
        • 是否喜歡
      • 如果可能一定要做使用者測試
    • 做出產品
      • 計畫 milestone 和 上市時間
      • 除了做使用者測試外也要做市場測試
        • 市場測試可以利用國家為範圍,香港是個很好的測試環境,測試結果幾乎會與全球差不多
      • 找出最好的付費點,做 App 是要賺錢的
        • 大多要依靠 經驗、測試,然後微調
    • 賣出你的產品
      • 可以考慮 itunes 最為你的第一個平台
      • 找出最划算的下載 預算
        • 投遞不同方式、種類的廣告,多嘗試幾個不同的通路
        • 想要大量下載基本上還是要靠錢
        • 目前(CPI) 單價越來越高(2~3+ 美金/每個下載)
      • 確保排名在前面
        • itunes 的規則前兩三個月才又改過,要靠長期觀察
          • 使用率
          • 下載量
          • 刪除率
          • 好的品質(raking)
        • Google 會依照多少人砍了你的 App
        • 各家 store 都會營造出榜單是活的感覺(常常跳動)
        • 不一定要衝上第一,前幾名一樣很有用
      • 從小的市場開始,早期測試早期修正
      • 考量長期的拓展模式
      • 考慮內至廣告模式賺錢
        • 不同國家使用不同家廣告,找出最自己最有利的
        • 最好設計成可線上切換廣告模式,多測試幾家不會錯
        • 影片廣告 ( e.g. vungle )
      • 3rd 網站廣告購買
      • android 可以考慮跟 Tapjoy 合作
      • 跟發行商合作 Chillingo
  • 中國市場
    • 市場大小
      • 250m 智慧型手機
      • 超高成場率
      • 中國市場 幾乎等同於 全球(中國以外國家)市場
    • 中國境內大約有 200 個以上的 android apps store
    • 中國使用社群
    • 手機出場 bundle app 也是常見的行銷方法
    • 收費
      • 管道
        • 電信商
          • 抽 30%
          • 提供小額付費
          • 一定要包自家的SDK(每一家都不同)
          • 還可能會被電信商要求改介面(不改不能上架)
        • 在地出版商
          • 抽 40 ~ 60%(也有抽到 90%)
          •  360, 91, baidu, ....等
          • 很可能會要求簽首發(eg. 一個月內只能在某個 store 賣)
          • 一定要包自家的SDK(每一家都不同)
        • 代理出版
          • 抽 50%
          • 你中國的窗口
          • 會幫你想辦法打擊盜版
            • Leon 提到當地盜版商甚至會把你的 App 盜版後要求正版下架,除非你花 XXX 元來買通
          • 會幫你進行手機測試,中國很多沒牌的手機
          • 會幫你通過審核
            • 一般審核約 1~2 個月,透過合作出版商大約 1 週
        • 在中國沒有設立公司妹辦法透過電信商收費
        • 一般來說大概僅剩下 12% 實際收益
      • 在地化
        • 一定要用中國用語
        • 但不一定要翻譯的很完整,因為太完整可能會被當做中國本土產品
      • 收費模式
        • 中國 IAP 模式收費為 2, 4, 6 元(人民幣)
        • 6 元(人民幣)已經是最貴
        • 以 causal game 來說中國會玩的人收入大多不高,2 元(人民幣)是非常願意付費
        • 不要讓使用者玩太久,玩太久就不付錢,所以有些 App 甚至是限定時間,超過 5 分鐘就需要付費
        • 中國 App 不能放廣告
      • 中國在地遊戲 vs 全球遊戲比例大約為 6 : 4
      • 在地出版商合作
        • 營收拆帳 + MG(保證金,超過XXX量後再跟你算)
        • 360 不給 MG
        • 有 MG 比較有保障,多少就是靠談判
        • MG 越高,因為電信商想賺回來,所以會更努力賣
        • 貨比三家不吃虧
      • 進入中國市場需要擁有的特殊技能
        • 整合各家 SDK (各家都有自己的)
          • 如果放心的話可以直接給 source code,對方會幫忙整
          • 如果是好遊戲,其他平台版本對方都可以幫忙做
        • 翻譯成中國用語
      • 如何進入
        • 找到一個好的管道
        • 整合當地的付費方式
        • GOOD LUCK


相關連結
Orange Nose studio
http://registrano.com/events/isalon2
ios
android
cocos2d
itunes
Google play
vungle
freeappaday.com
AppGratis.com
Chillingo
360
91
baidu
安卓
中國移動
中國聯通
新浪微博
騰訊微博
人人

iPhone todo(GTD) app review

時間管理非常重要,如果管理的很好的人自然是不需要,但是依靠點工具可以把這複雜的事情變得更簡單。就以我來說大多的固定事件、全都記錄在Google calendar,不但可以同步在各個的電腦(PC, MAC, Linux)、行動裝置(iPhone, iPad, Android, Windows8),並且可以設定提醒(Email, SMS, 推播)在指定的時間,但還是有些小問題,例如:已經辦完的事情不會消失,所以看到很多All Day's event,如果有個事情可能是在未來的某一天但詳細的時間地點都還不不確定......等的問題就以Google calendar來說還是不太方便達成,因此Google有推出了Google Task來解決此問題,Google Task非常的棒,整合在Google calendar中,但是只能在Google calendar中使用,離開了Google calendar就沒辦法如同Web整合的這麼好,也因此的讓我歸類出幾個todo app重點需求:
1. 需要可以整合Calendar 或支援 iCal
2. 多平台支援,至少要可以在iPhone, 電腦上編輯
3. 支援離線作業
4. 資料同步
5. 提醒(Email, SMS, 推播)
6. 把todo依照日期、即將到來、未來的某天分類
7. Tag/資料夾 分類
8. UI 要好用

因此開始找到了幾款iPhone App,以下僅列出幾個覺得比較ok的,有些太糟糕的就不列了
1. Any.do - http://www.any.do/
2. Wunderlist - https://www.wunderlist.com/
3. Orchestra Todo - http://www.orchestra.com
4. Google Task - https://mail.google.com/mail/help/tasks/
5. Todoist - http://todoist.com/
6. Asana - http://asana.com/

以下就依照我使用的感覺來做些評比
1. Any.do
優點:
1.UI很漂亮, iPhone版本很棒
2.支援iPhone, Android, Chrome extensions
3.支援語音輸入
4.支援子任務(subtask)

缺點:
1. 資料同步常常出錯,而且很慢
2. App只要不開啟等待同步完,即使在Chrome上設定好Alert也不會叫
3. Calendar只支援在手機 App內觀看


2. Wunderlist
優點:
1. Apple Store大力推薦
2. 支援超多平台(iPhone, iPad, Android, MacOS, Windows, Web)
3. GUI很漂亮
4. 支援子任務(subtask)
5. 支援筆記(note)
6. 可分享task

缺點:
1. 使用上常常會卡住(也許是還不習慣)
2. 非即時同步
3. folder分類有點亂(如果是只有自己使用時All, Inbox 常常會搞混)
4. 無法簡單的把task往後推個幾天,一定要給一個確定日期,但是設定日期方式是UIPickerView,無法直覺的想到是星期幾


Orchestra Todo
優點:
1. 同步速度超快
2. 可以分享task
3. 誤) 這家公司還推出了MailBox

缺點:
1. UI是特別針對會需要多人共享task而設計,而非個人
2. 不知道是不是公司資源都移到MailBox,感覺被冷落


Todoist
優點:
1. 看起來很強大
2. 支援很多平台
3. 付費用戶有支援ical

缺點:
1. 太強大了,UI設計上是個很大的挑戰,還是無法掌握設計者想法


Asana
優點:
1. 介面很清爽
2. 針對團隊協作開發設計
3. 支援iCal

缺點:
1. 資料同步常常錯誤,尤其在mobile app上網路斷斷續續




整體來說
"只使用iPhone"推薦使用"Any.do"
"使用iPhone, iPad, 桌上電腦"推薦使用"Wunderlist", "Any.do"
"團隊多人共同分享task"推薦使用"Asana"


iOS Mobile AD & AdMob SDK

相信Banner廣告在已經是無所不在的出現於網站中,也因為廣告的投遞不夠精準、太醜、看不順眼等因素產生了瀏覽器的plugin「AdBlock」,但是iOS上就沒有這種plugin(Android:AdBlock Plus),所以該如何塞入適當的廣告增加CTR(Click-through rate),CPM(cost per 1000 impressions)就是個相當直接關係廣告收入的重點,畢竟推撥廣告的不是自己。

先從幾點來說明廣告的生態、呈現方式
  • 行動廣告環境生態
  • 行動廣告平台提供商
  • 行動廣告呈現方式
  • AdMob SDK

行動廣告環境生態
  • 廣告主/代理商
    • 透過平台(下段說明)投遞廣告
  • 開發者
    • 開發APP/ Mobile web 插入廣告
    • 點擊廣告後的活動網頁/ mobile web
  • 消費者
    • 接受行動廣告平台推撥來的廣告
    • 點廣告給平台/開發者賺錢


行動廣告平台提供
目前最熱門就是AdMob,而admob背後推送的平台就是AdWhirl目前AdWhirlopen source,所以有興趣的人也可以自行來架設廣告平台,目前台灣幾個較大的行動廣告平台(Vpon, KuAd)也都是使用AdWhirl為基礎。

除了AdMob外還有幾個較大的平台如InMobiiAD、......等的平台,其中較為特別的是iAD,他不只扮演了廣告平台的角色,還提供了iAd Producer讓開發者/廣告主快速的製作出活動網頁的工具。


行動廣告呈現方式
  • Banner
    • Phone
      • 320*50
      • 300x250
      • 468x60
      • 728x90
      • 320*50
    • Pad
      • 320*50
      • 360x50
      • 480x32
      • 533x32, range of sizes from 480x32 to 682x32
      • 768x90
      • 1024x90
      • 800x90
      • 1280x90
      • 600x90
      • 1024x50
  • 全螢幕
    • 影片
    • 網頁
    • 地圖
  • 行動平台SDK
    • 陀螺儀
    • 電子羅盤
    • 加速度感應器
    • 定位服務
    • 相機
    • 震動
    • 加速度感應器
    • 3G/Wifi 網路
    • 多點觸碰/手勢操作
    • 播放聲音/影片
    • 藍牙
    • 地圖

其中可以控制行動平台SDK為比較厲害的作法,結合幾個不同的感應器可組成各種不同的動作完成廣告內容,例如相機+電子羅盤+定位服務可組成常見的LBS AR,地圖+定位服務+網路即可組成如Groupon Now這種有趣的活動。


AdMob SDK
這邊簡單介紹AdMob SDK使用方式,基本上大多在Google 官方已經有詳細介紹,SDK也是隨時都可以下載,唯獨讓我不了解的就是官方的教學當中居然少了兩個Framework,以致於按照官方教學Build仍然會出錯,兩個Framework分別為:
  • AudioToolBox.framework
  • StoreKit.framework

這兩個Framework都可以在iOS內建的Framework找到,加入後Build就不會出問題。


相關連結
AdMob - http://www.google.com/ads/admob/
AdWhirl - https://www.adwhirl.com/
Vpon - http://www.vpon.com/zh-tw/index.html
KuAD - http://www.kusogi.com/
InMobi - http://www.inmobi.com/
iAD - http://advertising.apple.com/
iAD Producer - https://developer.apple.com/iad/iadproducer/

iOS Yahoo APIs

如果有人需要使用Yahoo Weather, GEO location api可以直接拿來使用,由於剛好需要使用,就順便寫了,使用方式非常的簡單

歡迎順手取用 - https://github.com/IskenHuang/YahooLibrary


Reference
YQL Console - http://developer.yahoo.com/yql/console/#h=select%20*%20from%20weather.forecast%20where%20woeid%3D2502265
Yahoo Place Finder - http://developer.yahoo.com/geo/placefinder/

iOS6 AddressBook list

使用iOS6 Addressbook的Sample,使用前別忘了先
"#import <AddressBook/Addressbook.h>"



Reference: here: http://stackoverflow.com/a/12648938/480415

iOS Multiple target in the same project

如果新增Target在同一專案下可利用以下方式來區隔Target,避免需要維護兩份Code的成本

選擇 target -> Build Settings -> 搜尋 "preprocessor Macros"

*此範例為新增一個lite的版本
*Debug & Release 兩個版本都要加入

完成後在需要判斷是否為pro或lite版本方式


ios project build build number auto increase

xcode自動增加build number

Step1. Add Run Script


Step2. Input Script


如果是增加數字(1, 2, 3, ...... 9, 10, 11, 12, ...)
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

如果為16進位(1, 2, 3, ...... 9, A, B, C, ...)
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

完成後每次Build就會自動增加Build number

ios tableView cell accessory

TableViewCell的右邊常常會看到個「>」或者其他符號,常見的幾個當然系統內建就有可以參考如下

UITableViewCellAccessoryDisclosureIndicator

UITableViewCellAccessoryDetailDisclosureButton

UITableViewCellAccessoryCheckmark

當然,如果都不需要顯示使用
UITableViewCellAccessoryNone

使用方式如下
[cell setAccessoryType:XXXX]


參考資料
iOS Developer Library - UITableViewCell

Objective C 字串補0

在連續檔案時常常需要用上,例如連續圖片的動畫,用這方法就非常的重要,例如需要一串png圖檔「a0001.png」~「a0100.png」,這時候就相當重要好用

就已上面這例子在Objective C當中產出這100個檔名來
for(int i = 1; i <= 100; i++){ [NSString stringWithFormat:@"%04d", i]; }


格式「%nd」 n:需要補滿至幾位數
sample %2d
1
2
3
...
10
11
12

格式「%0nd」0:用0補滿至n位數
sample %02d
01
02
03
...
10
11
12

NSLocalizedString 多國語系字串

要使用這方式首先要新增檔案


檔案命名為"Localizable.strings"


設定字串KEY VALUE方式如下(行末別忘了加上分號)
"YOUR_KEY" = "YOUR VALUE";

使用字串方式如下
NSLocalizedString("KEY", nil)


但是有些時候會有個問題,在使用NSString 自定Format的同時會變得很醜,以及不同語言表示方式不同的問題,真的按照上面的方式硬幹當然可以,只是組出來很醜,如下範例
[NSString stringWithFormat:@"你想要吃什麼? %@ / %@", NSLocalizedString("KEY_A", nil), NSLocalizedString("KEY_B", nil)]

或許上面這範例還算簡單的狀況,如果前後還有加上其他字串等光組個字串眼睛都累了,Objective-C當然考量到了這點,就上面這範例可以修改為以下方式:

Localizable.strings
"YOUR_KEY" = "你想要吃什麼? %@ / %@";

code
[NSString stringWithFormat:NSLocalizedString(@"YOUR_KEY",nil), VALUE_A,VALUE_B ]



iOS get info.plist value

App中需要取得info.plist內容可使用下面這方式
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"PLIST_KEY_STRING"];

sample: App顯示名稱
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];

iOS simulator memory warning on device


平常在simulator上可以使用從"Hardware -> Simulator Memory Warning",Device上可以使用以下這串code來模擬

[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];

iOS _OBJC_CLASS_$_CALAYER error

一般開發中應該比較不會遇上這問題,應該是在copy別的code使用時比較會遇上...或者寫的很順就忘記去import framework
_OBJC_CLASS_$_CALAYER

解決方式只要把"QuartzCore.framework"加入即可

iOS UIWebView scrollview unrecognized

先前寫過一篇「iOS Webview scroll bounces」,能夠把webView的scrollView的反彈移除,在目前持有的手機版本iOS 5.1中相當的正常,但在iOS 4.3.3中卻會出現錯誤訊息如下:
[UIWebView scrollView]: unrecognized selector sent to instance

由於無法直接access到UIWebview 的scrollView,但scrollView確實是webView的subview,解決方式如下:
NSArray *webViewSubViews = [NSArray arrayWithArray:[webView subviews]];
UIScrollView *webScroller = (UIScrollView *)[webViewSubViews objectAtIndex:0];
webScroller.bounces = NO;

將WebView的ScrollView取出,再將其進行設定即可。

相關連結
iOS Developer Library
iOS Developer Library - WebView
iOS Webview scroll bounces