我正在构建一个利用应用内消息等4.0功能的应用,但我也希望我的应用可以在所有3.x版本上运行。如何检查设备是否可以使用MFMessageComposeViewController?
答案 0 :(得分:2)
Apple建议使用NSClassFromString
函数来确定该类是否可用。不要忘记如前所述的消息框架的弱链接。
来自MessageComposer示例的示例:
-(IBAction)showSMSPicker:(id)sender {
// The MFMessageComposeViewController class is only available in iPhone OS 4.0 or later.
// So, we must verify the existence of the above class and log an error message for devices
// running earlier versions of the iPhone OS. Set feedbackMsg if device doesn't support
// MFMessageComposeViewController API.
Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));
if (messageClass != nil) {
// Check whether the current device is configured for sending SMS messages
if ([messageClass canSendText]) {
[self displaySMSComposerSheet];
}
else {
feedbackMsg.hidden = NO;
feedbackMsg.text = @"Device not configured to send SMS.";
}
}
else {
feedbackMsg.hidden = NO;
feedbackMsg.text = @"Device not configured to send SMS.";
}
}
更新:我发布的示例代码会检查SMS编辑器的可用性,检查邮件编写器是否类似。
答案 1 :(得分:0)
试试这个:
#import <MessageUI/MessageUI.h>
#include <dlfcn.h>
if ( dlsym(RTLD_DEFAULT, "MFMailComposeErrorDomain") != NULL ) {
// MFMessageComposeViewController framework is available
} else {
// do alternative for no MFMessageComposeViewController
}
不要忘记弱连接MFMessageUI框架。
答案 2 :(得分:0)
您可以使用UIDevice
类检查设备的当前操作系统。
systemName
和systemVersion
属性可能就是您要找的内容。你还需要弱化框架链接!