步骤如下:
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等属性来获取
-(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];