今天項(xiàng)目正好用到短信邀請(qǐng)好友的功能,這邊我就簡(jiǎn)單介紹一下,iOS一些常用的短信功能。
短信驗(yàn)證碼
首先看你是個(gè)人開發(fā),還是團(tuán)隊(duì)開發(fā)。我以前自己寫東西玩的時(shí)候,短信驗(yàn)證功能是用的Bmob。Bmob是一個(gè)集成的云后臺(tái),如果你不懂后臺(tái)開發(fā),可以試試這個(gè),上面的文檔很齊全。
如果你公司的項(xiàng)目的話,這個(gè)時(shí)候肯定是有后臺(tái)支持的。這個(gè)可以集成友盟,mob等等一堆平臺(tái)的支持。
發(fā)送短信邀請(qǐng)(自定義短信)
當(dāng)遇到自定義短信的時(shí)候,有兩個(gè)選擇。
1.后臺(tái)推送
2.客戶端發(fā)送
后臺(tái)推送各大平臺(tái)都是要錢滴,幾分到幾毛不等。這時(shí)候就看老板舍不舍的money(≧▽≦)/啦啦啦。后臺(tái)做的事,我這邊就不提了。
這邊就介紹怎么客戶端發(fā)送
1.最簡(jiǎn)單的方法就是直接跳到系統(tǒng)的短信系統(tǒng)發(fā)送。
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:[NSString stringWithFormat:@"sms://%@",self.people.phone]]];
這句話對(duì)于跳轉(zhuǎn)跳轉(zhuǎn)的系統(tǒng)的東西都是管用的。
openurl 可以做的事情有很多 可以打開系統(tǒng)其他應(yīng)用
1.Map http://maps.google.com/maps?q=Shanghai
2.Email mailto://myname@google.com
3.Tel tel://10086
4.Msg sms://10086
我們應(yīng)用中最常用的應(yīng)該就是跳轉(zhuǎn)到這是界面了。因?yàn)橛脩艉芏嗲闆r下會(huì)禁止應(yīng)用訪問(wèn)隱私的一些東西(通訊錄,短信等等)。我們要需要提醒用戶打開,為了提高交互性。應(yīng)該直接跳轉(zhuǎn)到設(shè)置界面。
//ios8
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
如果想要跳轉(zhuǎn)到具體的設(shè)置界面的話
這下面有兩個(gè)傳送們,可以去看看。
http://www.itdecent.cn/p/19602f48309b
http://blog.csdn.net/likendsl/article/details/7553605
但跳轉(zhuǎn)到系統(tǒng)應(yīng)用返回就困難了,所以這種發(fā)短信的方式。不可取
2 利用系統(tǒng)的messageUI框架
#import <MessageUI/MessageUI.h>
跳轉(zhuǎn)到程序內(nèi)的短信界面
if ([MFMessageComposeViewController canSendText]) {
MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc] init];
messageVC.recipients = 這邊填寫要發(fā)送的短信好伐的數(shù)組;
messageVC.body = 短信的內(nèi)容;
messageVC.messageComposeDelegate = self; //指定代理
[self presentViewController:messageVC animated:YES completion:nil];
} else {
[PublicModel showHUDWithInfo:self andInfo:@"設(shè)備不支持短信功能"];
}
發(fā)送完短信,回到剛才的界面。都是模態(tài)視圖的跳轉(zhuǎn)
#pragma mark MFmessageComposeViewControllerDelegate
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
if (result == MessageComposeResultCancelled) {
[controller dismissViewControllerAnimated:YES completion:nil];
} else if (result == MessageComposeResultFailed) {
[controller dismissViewControllerAnimated:YES completion:^{
// [PublicModel showHUDWithInfo:self andInfo:@"發(fā)送失敗"];
}];
} else {
[controller dismissViewControllerAnimated:YES completion:^{
// [PublicModel showHUDWithInfo:self andInfo:@"發(fā)送成功"];
}];
}
}