检查iPhone是否可以使用MFMessageComposeViewController发送文本

时间:2010-09-01 23:04:56

标签: iphone

我正在构建一个利用应用内消息等4.0功能的应用,但我也希望我的应用可以在所有3.x版本上运行。如何检查设备是否可以使用MFMessageComposeViewController?

3 个答案:

答案 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.";
}
}

链接:MessageComposer sample

更新:我发布的示例代码会检查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类检查设备的当前操作系统。

http://developer.apple.com/iphone/library/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html

systemNamesystemVersion属性可能就是您要找的内容。你还需要弱化框架链接!