2012-02-03 42 views
1

我想找到一種方法來檢測使用的設備是否是iPod touch,有沒有?客觀的C方式來檢測是否使用的設備是一個iPod

我使用iPad的這種方法...

if (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) { 
    .... 
} 
+3

的重複[確定裝置( iPhone,iPod Touch)與iPhone SDK](http://stackoverflow.com/questions/448162/determine-device-iphone-ipod-touch-with-iphone-sdk) – 2012-02-03 16:45:17

回答

5

你爲什麼想知道?如果是因爲你想知道是否有相機或是否可以撥打電話等,那麼你最好用功能檢測功能來做這件事(如果蘋果在某個時候用手機制作iPod),比如Cliff's回答。

如果是其他一些原因,你真的只是想知道,如果它是一個iPod或iPhone,而不論實際設備的功能,這裏是你如何做到這一點:

if ([[UIDevice currentDevice].model isEqualToString:@"iPod touch"]) 
{ 
    ... 
} 
+0

太棒了!謝謝! – 2013-11-14 21:47:27

0

粗略的黑客工具,我已經在過去開發是查詢設備是否可以撥打電話#。我忘了語法的副手,但應該有類似

if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel:+11111"]]) { 
    //we have an iphone 
} else if (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) { 
    //We have an iPad.... 
} else { 
    //We probably have an iPod.... 
} 

說實話,我更喜歡這種方法相對於絕對的檢測,因爲它側重於設備而不是模型的能力。最好根據設備的能力而不是模型來調整邏輯,因爲你永遠不知道在將來的iOS設備版本中會引入什麼功能。例如,如果設備類型== iPad在一年前已經具有實際意義,那麼隱藏視頻控件,但是在iPad2在幾個月內推出時會限制該功能。如果您假設僅僅是因爲該設備是iPod,那麼您應該或不應該執行功能X,那麼如果添加了功能,您將限制產品進一步發佈的功能。

+0

這不是最好的方式來判斷它是否是iPod (請參閱我的回答),但它是我所討論的功能檢測的一個很好的例子,這通常是更好的實踐。 – 2012-02-03 16:58:29

+0

我同意@NickLockwood ...不是最好的方式去! – Legolas 2012-02-03 17:06:04

+0

確實,這不是檢測特定設備的最佳方法,但總體上可以提供更好的前向兼容性。 – Cliff 2012-02-03 19:10:57

相關問題