2012年8月22日 星期三

免費好用的音樂下載 App Tyche Radio


Tyche Radio 2.0 全新改版!!

你喜歡上 youtube 找歌嗎? 愛用 iPhone 聽歌嗎?

那你一定不能錯過這個免費好用的音樂下載 App ,叫做 tyche radio.

請直接至 Apple store 搜尋 tyche radio 就有了!

全新 Tyche Radio 以手勢操控為主,簡單說明一下手勢,未來也會把說明放到 App 裡哦

點兩下 -> 播放/暫停

往右滑 -> 下一首

往左滑 -> 上一首

上下移動 -> 調整音量

長按 -> 快轉



下載歌曲直接點擊左上方圖示即可

各個手勢說明


歌單列表,可編輯順序,修改歌名


熱門及搜尋介面









趕快下載吧!!!!


2012年8月21日 星期二

判斷使用者是否開啟 GPS @ iOS

最近在寫一個結合 Server 和 GPS 的小 App 剛好有遇到這個問題,分享一下吧。

只要 App 會用到 GPS 的功能就會跳出一個視窗詢問使用者是否同意該 App 使用 GPS 的功能,如下圖。




那我在程式內要如何判斷使用者是點選"同意"還是"不同意"呢?換句話說就是要判斷該 App 揪~~竟~~能否使用 GPS 功能!

其實不難,但是要先了解 GPS 是否開啟其實有分兩個開關。 一是 GPS 總開關(Location Services),二是各別 App 是否開啟 GPS 功能(例如 Big Lens 就被我關掉,Camera則可以使用)。



要判斷總開關是否開啟很簡單,也最常使用,如下

[CLLocationManager locationServicesEnabled]


[CLLocationManager locationServicesEnabled] 會回傳一個 BOOL 值,YES就是開啟,NO就是關閉,沒啥好講的。

再來是要判斷各個 App 的 GPS 使用權,也正是此次遇到的問題。

其實 Apple 的官方文件裡也有寫,只是不知道為啥似乎很少人使用,Google 了一陣子才找到正解。官方文件

判斷各個 App 的 GPS Method 是

[CLLocationManager authorizationStatus]


[CLLocationManager authorizationStatus] 回的就不是 BOOL了,而是整數。定義如下

typedef enum {
    kCLAuthorizationStatusNotDetermined = 0,
    kCLAuthorizationStatusRestricted,        
    kCLAuthorizationStatusDenied,            
    kCLAuthorizationStatusAuthorized         
} CLAuthorizationStatus;


簡單說明一下各個代表的意義,官方文件都有詳細說明,有興趣的人請自行前往囉。

kCLAuthorizationStatusNotDetermined 表示使用者尚未選擇同意或不同意。

kCLAuthorizationStatusRestricted 代表GPS功能受限於某些限制,例如 parental controls(不懂這應該翻叫啥。。。)

kCLAuthorizationStatusDenied 代表使用者點選了不同意!

kCLAuthorizationStatusAuthorized 代表使用者點選同意 。


所以只要在我需要的地方打上

if ( [CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorized) {
    //you can not use GPS.
    //do something
}


就可判斷使用者有打開該 App 的 GPS 功能了,這麼簡單的東西也可以打這麼一大篇。。。






2012年8月15日 星期三

iOS UI設計基本知識

整理一下網路搜集的一些基本 UI 的基本知識,官方的詳細文件 iOS UI elements and guildline


螢幕像素與解析度 

iPhone: 3.5 inch display
  • iPhone 3GS before: 480x320px, 163ppi 
  • iPhone 4 after: 960x640px, 326ppi 

iPad:9.7 inch display
  • iPad 2 before: 1024x768px, 132ppi  The new iPad: 2048x1536px, 264ppi 

字型
  • iOS 5.1中內建字型有58種。
  • iOS Preview 版本中少了 DB LCE TEMP字型,並增加了 Avenir, Avenir Next, Avenir Next Condensed, 以及Symbol等四種字型
 從 Xcode 中取得字型列表
// List all fonts on iPhone
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]]; NSArray *fontNames;

NSInteger indFamily, indFont;
for (indFamily=0; indFamily<[familyNames count]; ++indFamily) 
{
     NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]); 
fontNames = [[NSArray alloc] initWithArray: [UIFont fontNamesForFamilyName: [familyNames objectAtIndex:indFamily]]];
for (indFont=0; indFont<[fontNames count]; ++indFont) 
{
NSLog(@" Font name: %@", [fontNames objectAtIndex:indFont]);
}
}



Layout


  • 雖然具有Retina螢幕的iPhone 4以及the new iPad有 960x640 與 2048x1536 像素的畫面尺寸,但尺寸的標示依舊是以 480x320 與 1024x768 來進行。




  • 每個元件都會縮小一半



系統預設的高度

(1點意指Retina螢幕中的2像素,非Retina螢 幕中的1像素)


  • 系統列高度:20點






  • 導覽(Navigation Bar)/工具列 (Tool Bar)高度: 44 點


  • 頁籤列(Tab Bar)預設高度:49點,每個頁籤的圖示 (使用灰階透明背景圖片,官方的建議大小為30x30pts, 實作上可接受的最大圖示為48x32pts)




Magic Number on iOS:44


44x44這個大小同時也是蘋果的介面規範中所建議的最小點選區域。 實際上44 points在iPhone上是6.85mm,在iPad上是8.46mm. 需將這個數值謹記在心。



出圖需知

出圖時須針對Retina與非Retina設備提供對應大小的圖片

對於針對Retina螢幕所提供的圖片,請在主檔名加上後綴@2x,開發工具會完成 接下來的事。 

舉例來說:
image filename for non-Retina device: star.png
image filename for Retina device: star@2x.png 


其它像是 Icon 及 進場圖的規範官網都有文件詳細說明,擷圖如下:



這些已經精簡到不行了,下次再整理一下像素篇。








2012年8月14日 星期二

製作/更新 推播 SSL 憑證

原文在此 How to renew your Apple Push Notification Push SSL Certificate

還滿常用的功能,簡單翻釋一下,方便自已也方便他人。


 1) Log in,登入
登入 Apple iPhone Developer website 後點擊 iPhone Provisioning Portal. 在左邊的選單找到 App IDs 的選項,選擇你要製作/更新的 App,進入 Configure 後會看到已存在的憑證(若是第一次製作請勾選 Enable for Apple Push Notification service ),按下 Configure 啟動小精靈吧。

**Development Push SSL Certificate 是測試用
**Production Push SSL Certificate 是正式上線用





2) Generate a CSR,產生 CSR (Certificate Signing Request)。
根著小精靈完成即可,製作完後請妥善保管,以後很多機會會用到這份 CSR 檔。

3) Generate the certificate,產生憑證檔。
CSR 檔上傳成功後,小精靈會以你的使用者名稱產生一份 .cer 檔給你,按 Download 把憑證檔下載下來並點兩下安裝到你的 錀匙圈存取 裡.
**若使用 Chrome 或其他瀏覽器在上傳 CSR 檔時發生停住不動的情況,建議改換成 Safari 來製作憑證。




4. Export certificates / keys,(匯出憑證/Keys)
執行錀匙圈存取在左邊的類別選擇“我的憑證“後右邊會出現你目前這台電腦上擁有的憑證,你會看到有個叫做  “Apple Development IOS Push Services : 您的AppID“ 或是  “Apple Production IOS Push Services: 您的AppID“,點開憑證左邊的三角形會出現該憑證的 Key。接下來的動作就是要將證憑和對應的 Key 做匯出的動作。
假設今天我是要做測試版的憑證,在 Apple Development IOS Push Services: 您的AppID 上點右鍵選擇 “輸出Apple Development IOS Push Services: 您的AppID“ 並將他存成 apns-prod-cert.p12,接著同樣動作匯出 Key 並將他存成 apns-prod-key.p12。

**在匯出憑證和Key時會要求你對他們加密,空白即可。
**匯出的檔名可以自已取,但為方便執行下面的 command,建議照著文章取一樣的名字。


5) Convert to PEM format,轉成 PEM 格式

剛剛匯出的檔案必須轉成 PEM 的格式,可以利用終端機來操作。
在您的工具程式內找到終端機並執行它,熟悉的小黑窗就出現啦,執行以下2個指令吧。
openssl pkcs12 -clcerts -nokeys -out apns-prod-cert.pem -in apns-prod-cert.p12
openssl pkcs12 -nocerts -out apns-prod-key.pem -in apns-prod-key.p12

執行第二個指令時會強迫你一定要輸入密碼,為了方便起見,我們再輸入下面的指令把密碼拿掉。

openssl rsa -in apns-prod-key.pem -out apns-prod-key-noenc.pem



6) Merge files,合併檔案
最後,我們需要把剛才製作出來的兩個 PEM 檔案合併起來並用來連到 APNS (Apple Push Notification Server),指令如下:


cat apns-prod-cert.pem apns-prod-key-noenc.pem > apns-prod.pem
大功告成,打完收工!