الطريقة المناسبة للكشف عن طراز الجهاز (لمس iPhone / iPod Touch)؟
-
20-09-2019 - |
سؤال
هل هذه هي الطريقة الصحيحة للكشف عن الجهاز الذي يعمل المستخدم؟
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")، ولكن نعم، هذا هو طريقة مقبولة.