الطريقة المناسبة للكشف عن طراز الجهاز (لمس iPhone / iPod Touch)؟

StackOverflow https://stackoverflow.com/questions/2447539

سؤال

هل هذه هي الطريقة الصحيحة للكشف عن الجهاز الذي يعمل المستخدم؟

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.
}
هل كانت مفيدة؟

المحلول

ليس حل عام، لكن Apple في كثير من الحالات يوفر مكالمات API للتحقق من ميزة المعينة المعينة أو لا. أمثلة يمكن أن تكون:

  • +isSourceTypeAvailable: و +availableMediaTypesForSourceType: في UIImagePickerController مما يسمح لك بالتحقق مما إذا كانت الكاميرا متوفرة للجهاز الحالي.

  • +canSendMail في MFMailComposeViewController للتحقق مما إذا تم تكوين الجهاز لإرسال البريد.

  • -canOpenURL في UIApplication فئة للتحقق مما إذا كان يمكن فتح عنوان URL. على سبيل المثال، يمكن استخدامه للتحقق مما إذا كان من الممكن إجراء مكالمة هاتفية:

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

إذا كانت هذه المكالمات API متاحة لغرضك، فسوف أستخدمها بدلا من ذلك الاعتماد على معرفات السلسلة المضغوطة.

نصائح أخرى

لست متأكدا من أنني أريد التعميم كثيرا (أي، قد يكون هناك iPod في نهاية المطاف مع كاميرا، ولا أعرف أن iPhone سيكون دائما يسمى "iPhone")، ولكن نعم، هذا هو طريقة مقبولة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top