短信发送。

步骤如下:
1)导入CoreTelephony这个private framework
2)在xxx.m中加入红字部分:

#import "xxx.h"

extern NSString *CTSettingCopyMyPhoneNumber();


@implementation
+(NSString *)myNumber{
        return CTSettingCopyMyPhoneNumber();       
}

@end

其实很多地方都写了 标识extern NSString *CTSettingCopyMyPhoneNumber(); 之后就可以直接引用CTSettingCopyMyPhoneNumber() 

一开始发现总报错说无此方法,非常纳闷,结果是一个字母大小写的问题,汗颜.汗颜

 

CTSettingCopyMyPhoneNumber();  这个方法 可以返回 手机号码

 

另外机子的唯一标识码等一些信息 可以用[UIDevice currentDevice] 的uniqueIdentifier,name等属性来获取


MFMessageComposeViewController点击cancel 或者发送 键盘不出现

纠结了很久的问题终于解决了,做个记录
加载MFMessageComposeViewCont roller

-(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 = [[UIAlertViewalloc] 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 ) {

caseMessageComposeResultCancelled:

       {

//click cancel button

         }

break;

caseMessageComposeResultFailed:// send failed

          

break;

caseMessageComposeResultSent:

           {

             

//dosomething

           }

break;

default:

break;

}

 

}

我们知道可以使用这样的代码在iphone中发送短信:

[[UIApplication sharedApplication]openURL:@"sms:12345678"]; 

但这样的方式无法指定短信内容。那么我们可以使用MessageUI框架。

 

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

 

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

 

MFMessageComposeViewController *controller =[[[MFMessageComposeViewControlleralloc] init]autorelease];

controller.body = @"zc";

controller.recipients = [NSArrayarrayWithObjects:@"106295598",nil];

controller.messageComposeDelegate =self;

[selfpresentModalViewController:controlleranimated:YES];

 

同时实现协议MFMessageComposeViewControllerDelegate,

在协议方法messageComposeViewController:didFinishWithResult:

中解散窗口:

switch (result) {

caseMessageComposeResultCancelled:

NSLog(@"Cancelled");

break;

case MessageComposeResultFailed:

[selfalert:@"发送短信错误!"];

break;

case MessageComposeResultSent:

break;

default:

break;

}

[selfdismissModalViewControllerAnimated:YES];

每日分享 - 检测iPhone/iPodTouch/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
{
    intmodel = [DeviceDetection detectDevice];
    if(model == MODEL_IPOD_TOUCH || model == MODEL_IPAD){
        //||model == MODEL_IPHONE_SIMULATOR){
        returnYES;
    }    
    else{
        returnNO;
    }

}



+ (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";
    
    uintdetected;
    
    if([model compare:iPhoneSimulator] == NSOrderedSame) {
        //iPhone simulator
        detected= MODEL_IPHONE_SIMULATOR;
    }
    elseif ([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")
        structutsname u;
        
        //u.machine could be "i386" for the simulator, "iPod1,1" on iPodTouch, "iPhone1,1" on iPhone V1 & "iPhone1,2" oniPhone3G
        
        uname(&u);
        
        if(!strcmp(u.machine, "iPhone1,1")) {
            detected= MODEL_IPHONE;
        }else {
            detected= MODEL_IPHONE_3G;
        }
    }
    returndetected;
}

+ (NSString *) returnDeviceName:(BOOL)ignoreSimulator {
    NSString*returnValue = @"Unknown";
    
    switch([DeviceDetection detectDevice]) {
        caseMODEL_IPHONE_SIMULATOR:
            if(ignoreSimulator) {
                returnValue= @"iPhone 3G";
            }else {
                returnValue= @"iPhone Simulator";
            }
            break;
        caseMODEL_IPOD_TOUCH:
            returnValue= @"iPod Touch";
            break;
        caseMODEL_IPHONE:
            returnValue= @"iPhone";
            break;
        caseMODEL_IPHONE_3G:
            returnValue= @"iPhone 3G";
            break;
        default:
            break;
    }
    
    returnreturnValue;
}

@end

你可能感兴趣的:(短信发送。)