2

これは、ユーザーが実行しているデバイスを検出する適切な方法ですか?

NSString *currentModel = [[UIDevice currentDevice] model];
if ([currentModel isEqualToString:@"iPhone"]) {
    // The user is running on iPhone so allow Call, Camera, etc.
} else {
    // The user is running on a different device (iPod / iPad / iPhone Simulator) disallow Call.
}
4

2 に答える 2

7

これは一般的な解決策ではありませんが、多くの場合、Appleは特定の機能がサポートされているかどうかを確認するためのAPI呼び出しを提供しています。例は次のとおりです。

  • +isSourceTypeAvailable:現在のデバイス+availableMediaTypesForSourceType:UIImagePickerControllerカメラが使用可能かどうかを確認できます。

  • +canSendMailMFMailComposeViewControllerデバイスがメールを送信するように構成されているかどうかを確認します 。

  • -canOpenURLクラスでUIApplicationURLを開くことができるかどうかを確認します。たとえば、電話をかけることが可能かどうかを確認するために使用できます。

    if (![[UIApplication sharedApplication] canOpenURL:
                                     [NSURL URLWithString:@"tel://"]])
        //We cannot make a call - hide call button here
    

そのようなAPI呼び出しが目的に使用できる場合は、ハードコードされた文字列識別子に依存するのではなく、それらを使用します。

于 2010-03-15T13:53:04.143 に答える
1

それほど一般化したいとは思いませんが(つまり、最終的にはカメラ付きのiPodが登場する可能性があり、iPhoneが常に「iPhone」と呼ばれるかどうかはわかりません)、そうです。受け入れられた方法。

于 2010-03-15T13:52:49.527 に答える