`

MFMessageComposeViewController发送短信

阅读更多
MFMessageComposeViewController 点击cancel 或者发送 键盘不出现
//////////////////////////////////////////////////////////////////////////////
加载MFMessageComposeViewController
- (void)showMessageView
{
    if( [MFMessageComposeViewController canSendText] )
    {
        MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init]; //autorelease];
        controller.recipients = [NSArray arrayWithObject:@"15988888888"];
        controller.body = @"请直接将此条认证短信发送给我们,以完成手机安全绑定。(9qzkd27953ma)";
        controller.messageComposeDelegate = self;
       
        [self presentModalViewController:controller animated:YES];
//        [[[[controller viewControllers] lastObject] navigationItem] setTitle:@"SomethingElse"];//修改短信界面标题
        [controller release];
    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示信息"
                                                        message:@"该设备不支持短信功能"
                                                       delegate:self
                                              cancelButtonTitle:nil
                                              otherButtonTitles:@"确定", nil];
        [alert show];
        [alert release];
    }
}


MFMessageComposeViewControllerDelegate
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[controller dismissModalViewControllerAnimated:NO];//关键的一句   不能为YES
switch ( result ) {
case MessageComposeResultCancelled:
        {
//click cancel button
          }
break;
case MessageComposeResultFailed:// send failed
           
break;
case MessageComposeResultSent:
            {
               
//do something
            }
break;
default:
break;
}

}
我们知道可以使用这样的代码在iphone中发送短信:
[[UIApplication sharedApplication] openURL:@"sms:12345678"];
但这样的方式无法指定短信内容。那么我们可以使用MessageUI框架。

首先在程序中导入MessageUI.framework。import头文件:#import "DeviceDetection.h"

然后在代码中使用下面的语句来调用短信发送窗口,并指定号码和短信内容:

MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];
controller.body = @"zc";
controller.recipients = [NSArray arrayWithObjects:@"106295598", nil];
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];

同时实现协议MFMessageComposeViewControllerDelegate,
在协议方法messageComposeViewController:didFinishWithResult:
中解散窗口:
switch (result) {
case MessageComposeResultCancelled:
NSLog(@"Cancelled");
break;
case MessageComposeResultFailed:
[self alert:@"发送短信错误!"];
break;
case MessageComposeResultSent:
break;
default:
break;
}
[self dismissModalViewControllerAnimated:YES];
每日分享 - 检测iPhone/iPod Touch/iPad设备类型 

#import <Foundation/Foundation.h>
#import <sys/utsname.h>

enum {
    MODEL_IPHONE_SIMULATOR,
    MODEL_IPOD_TOUCH,
    MODEL_IPHONE,
    MODEL_IPHONE_3G,
    MODEL_IPAD
};

@interface DeviceDetection : NSObject

+ (uint) detectDevice;

+ (NSString *) returnDeviceName:(BOOL)ignoreSimulator;
+ (BOOL) isIPodTouch;


@end


#import "DeviceDetection.h"

@implementation DeviceDetection

+ (BOOL) isIPodTouch
{
    int model = [DeviceDetection detectDevice];
    if (model == MODEL_IPOD_TOUCH || model == MODEL_IPAD){
        //|| model == MODEL_IPHONE_SIMULATOR){
        return YES;
    }   
    else {
        return NO;
    }

}



+ (uint) detectDevice {
    NSString *model= [[UIDevice currentDevice] model];
   
    // Some iPod Touch return "iPod Touch", others just "iPod"
   
    NSString *iPodTouch = @"iPod Touch";
    NSString *iPodTouchLowerCase = @"iPod touch";
    NSString *iPodTouchShort = @"iPod";
    NSString *iPad = @"iPad";
   
    NSString *iPhoneSimulator = @"iPhone Simulator";
   
    uint detected;
   
    if ([model compare:iPhoneSimulator] == NSOrderedSame) {
        // iPhone simulator
        detected = MODEL_IPHONE_SIMULATOR;
    }
    else if ([model compare:iPad] == NSOrderedSame) {
        // iPad
        detected = MODEL_IPAD;
    } else if ([model compare:iPodTouch] == NSOrderedSame) {
        // iPod Touch
        detected = MODEL_IPOD_TOUCH;
    } else if ([model compare:iPodTouchLowerCase] == NSOrderedSame) {
        // iPod Touch
        detected = MODEL_IPOD_TOUCH;
    } else if ([model compare:iPodTouchShort] == NSOrderedSame) {
        // iPod Touch
        detected = MODEL_IPOD_TOUCH;
    } else {
        // Could be an iPhone V1 or iPhone 3G (model should be "iPhone")
        struct utsname u;
       
        // u.machine could be "i386" for the simulator, "iPod1,1" on iPod Touch, "iPhone1,1" on iPhone V1 & "iPhone1,2" on iPhone3G
       
        uname(&u);
       
        if (!strcmp(u.machine, "iPhone1,1")) {
            detected = MODEL_IPHONE;
        } else {
            detected = MODEL_IPHONE_3G;
        }
    }
    return detected;
}

+ (NSString *) returnDeviceName:(BOOL)ignoreSimulator {
    NSString *returnValue = @"Unknown";
   
    switch ([DeviceDetection detectDevice]) {
        case MODEL_IPHONE_SIMULATOR:
            if (ignoreSimulator) {
                returnValue = @"iPhone 3G";
            } else {
                returnValue = @"iPhone Simulator";
            }
            break;
        case MODEL_IPOD_TOUCH:
            returnValue = @"iPod Touch";
            break;
        case MODEL_IPHONE:
            returnValue = @"iPhone";
            break;
        case MODEL_IPHONE_3G:
            returnValue = @"iPhone 3G";
            break;
        default:
            break;
    }
   
    return returnValue;
}

@end
分享到:
评论

相关推荐

    iOS程序内部发送短信

    在压缩包中的"IOS 程序内部发短信"文件可能是包含了一个简单的示例项目,你可以通过查看和运行它来进一步理解这个过程。记得在实际开发中,始终要遵循Apple的App Store审核指南,确保你的应用符合所有安全和隐私政策...

    iOS 发短信代码demo

    这个“iOS发短信代码demo”就是一个简单的示例,旨在帮助初学者理解和实现这个功能。以下是对这个demo中可能包含的关键知识点的详细解释: 1. **使用MFMessageComposeViewController**: ...

    ios 发短信功能

    总的来说,实现iOS平台上的短信发送功能涉及导入MessageUI框架、获取权限、创建并配置MFMessageComposeViewController实例,以及处理发送状态的回调。通过这些步骤,开发者可以为用户提供便捷的短信发送功能。

    iOS--发送短信的demo

    在实现发送短信的功能时,我们需要创建一个MFMessageComposeViewController实例,并设置其代理为当前的ViewController。同时,还需要设置收件人(telNumber): ```swift func sendSMS(telNumber: String) { if ...

    系统短信发送 Demo

    当你需要在应用中添加发送短信的功能时,你需要创建`MFMessageComposeViewController`的实例。 2. **检查短信发送权限**: 在iOS 10及以上版本,发送短信之前,你需要检查用户是否允许你的应用访问其短信功能。这...

    手机短信发送和接收 学习

    在iOS平台上,可以使用MFMessageComposeViewController类进行短信发送,但苹果对短信接收的API进行了限制,通常只能通过第三方推送服务来实现类似的功能。 此外,开源项目和库也大大简化了短信服务的开发工作。例如...

    发送短信的Demo

    在确定可以发送短信后,我们可以创建一个`MFMessageComposeViewController`实例,并设置其属性,如收件人电话号码和预设的短信内容。例如,如果你想发送短信到电话号码`1234567890`,可以这样操作: ```swift let ...

    ios-发短信.zip

    这个名为“ios-发短信.zip”的压缩包很可能包含了一个示例项目,用于演示如何在iOS设备上实现短信功能。由于描述中提到这需要真机进行测试,这意味着模拟器可能无法完全支持这项功能,因为iOS模拟器不支持发送实际的...

    跳转到打电话,发短信的界面以及直接打电话发短信

    本文将详细讲解如何实现"跳转到打电话、发短信的界面"以及"直接打电话发短信"的技术细节。 一、跳转到打电话界面 1. Android系统: 在Android中,我们可以使用`Intent`来启动拨号界面。首先,创建一个`Intent`对象...

    不调用ios自带发送短信通讯录

    虽然标题提到不调用系统自带的发送短信,但在iOS中,官方推荐的方法是使用`MFMessageComposeViewController`类,它允许用户在App内部编写并发送短信。首先,确保在Info.plist文件中添加`...

    iphone短信发送(非系统界面)

    MessageUI框架提供了MFMessageComposeViewController类,用于支持在应用内部撰写和发送短信。虽然通常我们会使用这个控制器来展示一个系统级别的界面,但通过一些技巧,我们可以实现无界面发送。 第一步,需要导入...

    send-a-chinese-message.rar_发送中文短信_短信_短信发送

    在IT行业中,发送中文短信是一项常见的通信需求,特别是在移动设备和应用程序中。本文将深入探讨如何实现这个功能,包括技术背景、实现原理以及可能遇到的问题。 首先,我们要理解短信服务的基本概念。短信(Short ...

    iOS发送短信代码,测试可用

    首先,我们要知道在iOS中,发送短信通常依赖于`MFMessageComposeViewController`类,它是`MessageUI`框架的一部分。`MessageUI`框架提供了处理短信和邮件的接口,允许应用程序在用户界面中嵌入短信或邮件的撰写视图...

    自定义短信发送demo

    此外,对于iOS系统,也需要考虑使用其提供的`MFMessageComposeViewController`进行短信发送,并遵循类似的过程来构建自定义电话簿功能。 总结来说,"自定义短信发送demo"是一个包含发送短信和定制电话簿功能的示例...

    ios发送短信

    if MFMessageComposeViewController.canSendText() { // 检查设备是否支持发送短信 self.present(messageComposer, animated: true, completion: nil) } else { // 设备不支持发送短信,可以在此提示用户 } ``` ...

    手机短信收发程序

    在iOS平台上,可以利用MFMessageComposeViewController进行短信发送,而MessageUI框架则提供了接收短信的接口。 在“手机短信收发程序”中,关键的类可能是SmsTest,这个类可能包含了发送短信、接收短信、管理短信...

    发送短信demo

    要使用此方法,我们需要创建MFMessageComposeViewController实例,设置其代理,然后设置短信的body和收件人。当用户点击发送时,实际的发送过程由iOS的短信应用处理。这种方法的优点是用户界面直观,但缺点是它需要...

    IOS程序开发之跳转短信发送界面实现发送短信功能

    `MFMessageComposeViewController`是iOS内置的一个用于发送短信的视图控制器,它提供了创建、配置和显示短信发送界面的能力。首先,我们需要检查设备是否支持发送短信,这可以通过调用`...

    iOS 电话 短信调用

    在iOS中,短信发送通常通过`MFMessageComposeViewController`类来实现,它是一个内置的控制器,可以展示一个用于编写和发送短信的界面。首先,你需要检查设备是否支持发送短信: ```swift if ...

Global site tag (gtag.js) - Google Analytics