The implementation of phone texting and other functions in iOS development
Last Update:2015-12-21
Source: Internet
Author: User
<span id="Label3"></p><p><p>In app development, it may involve the functions of making calls, texting, and sending Emails. For example, usually a product "about" page, there will be a Developer's contact, ideally, when the user clicks on the phone number, can automatically help users dial out, it involves the function of the PHONE.</p></p><p><p>In iOS development, there are three ways to Call:</p></p><p><p>(1) jump directly to the dial-up interface, the code is as follows</p></p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">12</td> <td class="code"><code class="objc keyword">NSURL</code><code class="objc plain">*url = [</code><code class="objc keyword">NSURL</code><code class="objc plain">URLWithString:@</code><code class="objc string">"tel://10010"</code><code class="objc plain">];</code><code class="objc spaces"> </code><code class="objc plain">[[UIApplication sharedApplication] openURL:url];</code></td> </tr> </tbody> </table><p><p>Disadvantage: after the call is finished, will not automatically return to the original application, directly stay on the call log Page.</p></p><p><p>(2) before dialing the box to ask, after the call can automatically return to the original Application. The code is as Follows:</p></p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">12</td> <td class="code"><code class="objc keyword">NSURL</code><code class="objc plain">*url = [</code><code class="objc keyword">NSURL</code><code class="objc plain">URLWithString:@</code><code class="objc string">"telprompt://10010"</code><code class="objc plain">];</code><code class="objc plain">[[UIApplication sharedApplication] openURL:url];</code></td> </tr> </tbody> </table><p><p>Cons: private api, So may not pass Apple official Audit. If you are an enterprise application (no online AppStore required), You can use this Method.</p></p><p><p>(3) Create a UIWebView to load the url, after the dial can automatically return to the original Application. The code is as Follows:</p></p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">123</td> <td class="code"><code class="objc plain">UIWebView *webView = [[UIWebView alloc]init];</code><code class="objc keyword">NSURL</code><code class="objc plain">*url = [</code><code class="objc keyword">NSURL</code> <code class="objc plain">URLWithString:@</code><code class="objc string">"tel://10010"</code><code class="objc plain">];</code><code class="objc plain">[webView loadRequest:[</code><code class="objc keyword">NSURLRequest</code><code class="objc plain">requestWithURL:url ]];</code></td> </tr> </tbody> </table><p><p>It is recommended to use the third Method.</p></p><p><p>There are two ways to send text Messages.</p></p><p><p>(1) jump directly to the texting INTERFACE. Code:</p></p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">12</td> <td class="code"><code class="objc keyword">NSURL</code><code class="objc plain">*url = [</code><code class="objc keyword">NSURL</code><code class="objc plain">URLWithString:@</code><code class="objc string">"sms://10010"</code><code class="objc plain">];</code><code class="objc plain">[[UIApplication sharedApplication] openURL:url];</code></td> </tr> </tbody> </table><p><p>Disadvantage: cannot define the content that sends the text message, and after sending the text message cannot automatically return to the original Application.</p></p><p><p>(2) use MESSAGEUI framework to send sms, need to include header file #import <messageui/messageui.h>, the code is as Follows:</p></p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">123456789</td> <td class="code"><code class="objc plain"><code class="objc plain">MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc]init];</code></code><code class="objc comments"><code class="objc comments">//设置短信内容</code></code><code class="objc plain"><code class="objc plain">vc.body = @</code></code><code class="objc string"><code class="objc string">"吃饭了没"</code></code><code class="objc plain"><code class="objc plain">;</code></code><code class="objc comments"><code class="objc comments">//设置收件人列表</code></code><code class="objc plain"><code class="objc plain">vc.recipients = @[@</code></code><code class="objc string"><code class="objc string">"10010"</code></code><code class="objc plain"><code class="objc plain">,@</code></code><code class="objc string"><code class="objc string">"10086"</code></code><code class="objc plain"><code class="objc plain">];</code></code><code class="objc comments"><code class="objc comments">//设置代理</code></code><code class="objc plain"><code class="objc plain">vc.messageComposeDelegate = </code></code><code class="objc keyword"><code class="objc keyword">self</code></code><code class="objc plain"><code class="objc plain">;</code></code><code class="objc comments"><code class="objc comments">//显示控制器</code></code><code class="objc plain"><code class="objc plain">[</code></code><code class="objc keyword"><code class="objc keyword">self</code></code> <code class="objc plain"><code class="objc plain">presentViewController:vc animated:</code></code><code class="objc keyword"><code class="objc keyword">YES</code></code> <code class="objc plain"><code class="objc plain">completion:</code></code><code class="objc keyword"><code class="objc keyword">nil</code></code><code class="objc plain"><code class="objc plain">];</code></code></td> </tr> </tbody> </table><p><p>Also implement the proxy function:</p></p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">12345678</td> <td class="code"><code class="objc comments">/**</code><code class="objc spaces"> </code><code class="objc comments">* 点击取消按钮会自动调用</code><code class="objc spaces"> </code><code class="objc comments">*</code><code class="objc spaces"> </code><code class="objc comments">*/</code><code class="objc plain">- (</code><code class="objc datatypes">void</code><code class="objc plain">)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result</code><code class="objc plain">{</code><code class="objc spaces"> </code><code class="objc plain">[controller dismissViewControllerAnimated:</code><code class="objc keyword">YES</code><code class="objc plain">completion:</code><code class="objc keyword">nil</code><code class="objc plain">];</code><code class="objc plain">}</code></td> </tr> </tbody> </table><p><p>It is recommended to use the second Method.</p></p><p><p>There are two ways to send Mail.</p></p><p><p>(1) with your own mail client, the code is as Follows:</p></p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">12</td> <td class="code"><code class="objc keyword">NSURL</code><code class="objc plain">*url = [</code><code class="objc keyword">NSURL</code><code class="objc plain">URLWithString:@</code><code class="objc string">"mailto://<span class="__cf_email__" data-cfemail="e9d8d9d9d8d9a99898c78a8684">[email protected]</span>"</code><code class="objc plain">];</code><code class="objc plain">[[UIApplication sharedApplication] openURL:url];</code></td> </tr> </tbody> </table><p><p>Disadvantage: do not automatically return to the original application after sending the message</p></p><p><p>(2) similar to the second method of texting, using messageui, the code is as Follows:</p></p> <table style="width: 827px; height: 204px;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">1234567891011121314</td> <td class="code"><code class="objc keyword"><code class="objc keyword">if</code></code><code class="objc plain"><code class="objc plain">(![MFMailComposeViewController canSendMail]) </code></code><code class="objc keyword"><code class="objc keyword">return</code></code><code class="objc plain"><code class="objc plain">;</code></code><code class="objc spaces"><code class="objc spaces"> </code></code><code class="objc plain"><code class="objc plain">MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];</code></code><code class="objc comments"><code class="objc comments">//设置邮件主题</code></code><code class="objc plain"><code class="objc plain">[vc setSubject:@</code></code><code class="objc string"><code class="objc string">"测试会议"</code></code><code class="objc plain"><code class="objc plain">];</code></code><code class="objc comments"><code class="objc comments">//设置邮件内容</code></code><code class="objc plain"><code class="objc plain">[vc setMessageBody:@</code></code><code class="objc string"><code class="objc string">"开会"</code></code> <code class="objc plain"><code class="objc plain">isHTML:</code></code><code class="objc keyword"><code class="objc keyword">NO</code></code><code class="objc plain"><code class="objc plain">];</code></code><code class="objc comments"><code class="objc comments">//设置收件人列表</code></code><code class="objc plain"><code class="objc plain">[vc setToRecipients:@[@</code></code><code class="objc string"><code class="objc string">"[email protected]"</code></code><code class="objc plain"><code class="objc plain">]];</code></code><code class="objc comments"><code class="objc comments">//设置抄送人列表</code></code><code class="objc plain"><code class="objc plain">[vc setCcRecipients:@[@</code></code><code class="objc string"><code class="objc string">"[email protected]"</code></code><code class="objc plain"><code class="objc plain">]];</code></code><code class="objc comments"><code class="objc comments">//设置代理</code></code><code class="objc plain"><code class="objc plain">vc.mailComposeDelegate = </code></code><code class="objc keyword"><code class="objc keyword">self</code></code><code class="objc plain"><code class="objc plain">;</code></code><code class="objc comments"><code class="objc comments">//显示控制器</code></code><code class="objc plain"><code class="objc plain">[</code></code><code class="objc keyword"><code class="objc keyword">self</code></code> <code class="objc plain"><code class="objc plain">presentViewController:vc animated:</code></code><code class="objc keyword"><code class="objc keyword">YES</code></code> <code class="objc plain"><code class="objc plain">completion:</code></code><code class="objc keyword"><code class="objc keyword">nil</code></code><code class="objc plain"><code class="objc plain">];</code></code></td> </tr> </tbody> </table><p><p>To implement the proxy method:</p></p> <table border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td class="gutter">1234</td> <td class="code"><code class="objc plain">- (</code><code class="objc datatypes">void</code><code class="objc plain">)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(</code><code class="objc keyword">NSError</code><code class="objc plain">*)error</code><code class="objc plain">{</code><code class="objc spaces"> </code><code class="objc plain">[controller dismissViewControllerAnimated:</code><code class="objc keyword">YES</code><code class="objc plain">completion:</code><code class="objc keyword">nil</code><code class="objc plain">];</code><code class="objc plain">}</code></td> </tr> </tbody> </table><p><p>The implementation of phone texting and other functions in iOS development</p></p></span>