1. 程式人生 > >iOS學習筆記(十四)——打電話、發簡訊

iOS學習筆記(十四)——打電話、發簡訊

       電話、簡訊是手機的基礎功能,iOS中提供了介面,讓我們呼叫。這篇文章簡單的介紹一下iOS的打電話、發簡訊在程式中怎麼呼叫。

1、打電話

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10010"]];//打電話

       使用openURL這個API打電話結束後,返回的是系統的撥打電話介面,如何才能返回自己的應用呢?有兩種方法與大家分享。

第一種是用UIWebView載入電話,這種是合法的,可以上App Store的。

程式碼如下:

    UIWebView*callWebview =[[UIWebView alloc] init];
    NSURL *telURL =[NSURL URLWithString:@"tel:10010"];
    [callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
    //記得新增到view上
    [self.view addSubview:callWebview];


第二種是私有方法,不能上App Store的(自己沒試過)。 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://10010"]];

上面的程式碼只是把第一個方法中的tel為telprompt.

2、發簡訊

iOS中可以使用兩種方式傳送簡訊,最簡單是使用openURL:

 [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms://10010"]];//發簡訊

    上面方式無法指定簡訊內容,iOS4.0新加入了MFMessageComposeViewCont

roller和MFMessageComposeViewControllerDelegate,提供了發


        MFMessageComposeViewController提供了操作介面使用前必須檢查canSendText方法,若返回NO則不應將這個controller展現出來,而應該提示使用者不支援傳送簡訊功能.

messageComposeDelegate :代理,處理髮送結果

recipients  :收信人<列表,支援群發>

body :簡訊內容

Frameworks中要引入MessageUI.framework

#import <MessageUI/MessageUI.h>
新增協議:

<MFMessageComposeViewControllerDelegate>

#import <MessageUI/MessageUI.h>

@interface DemoViewController : UIViewController <MFMessageComposeViewControllerDelegate>

@end

呼叫MFMessageComposeViewController同時實現協議MFMessageComposeViewControllerDelegate。
- (void)showMessageView
{
    
    if( [MFMessageComposeViewController canSendText] ){
        
        MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc]init]; //autorelease];
        
        controller.recipients = [NSArray arrayWithObject:@"10010"];     
        controller.body = @"測試發簡訊";        
        controller.messageComposeDelegate = self;

        [self presentModalViewController:controller animated:YES];
        
        [[[[controller viewControllers] lastObject] navigationItem] setTitle:@"測試簡訊"];//修改簡訊介面標題
    }else{
        
        [self alertWithTitle:@"提示資訊" msg:@"裝置沒有簡訊功能"];        
    }    
}


//MFMessageComposeViewControllerDelegate

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
    
    [controller dismissModalViewControllerAnimated:NO];//關鍵的一句   不能為YES
    
    switch ( result ) {
            
        case MessageComposeResultCancelled:

            [self alertWithTitle:@"提示資訊" msg:@"傳送取消"]; 
            break;
        case MessageComposeResultFailed:// send failed
            [self alertWithTitle:@"提示資訊" msg:@"傳送成功"]; 
            break;
        case MessageComposeResultSent:
            [self alertWithTitle:@"提示資訊" msg:@"傳送失敗"]; 
            break;
        default:
            break; 
    }
}


- (void) alertWithTitle:(NSString *)title msg:(NSString *)msg {

    
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
           message:msg
           delegate:self
           cancelButtonTitle:nil
           otherButtonTitles:@"確定", nil];
                         
   [alert show];
                 
}
          


/*** @author 張興業

參考:

http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMessageComposeViewController_class/Reference/Reference.html

相關推薦

iOS學習筆記——打電話簡訊

       電話、簡訊是手機的基礎功能,iOS中提供了介面,讓我們呼叫。這篇文章簡單的介紹一下iOS的打電話、發簡訊在程式中怎麼呼叫。1、打電話 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:

iOS學習筆記——文件操作NSFileManager

技術分享 append hint pbo -cp fcm object 寫入 rtmp http://blog.csdn.net/xyz_lmn/article/details/8968213 iOS的沙盒機制,應用只能訪問自己應用目錄下的文件。ios不像Androi

如鵬網學習筆記ASP.NET

表單參數 form表單 web服務 exp 序列化 date 文字 arr 處理程序 Asp.net筆記 一、Socket類   進行網絡編程的類,可以在兩臺計算機之間進行網絡通訊   過程:     向服務器發送指令:     GET /index.html HTTP

Java框架spring Boot學習筆記:log4j介紹

inf alt 技術分享 images 使用 image 詳細 配置文件 -128 功能 日誌功能,通過log4j可以看到程序運行過程的詳細信息。 使用 導入log4j的jar包 復制log4j的配置文件,復制到src下面         3.設置日誌級別    

Linux學習筆記df命令du命令磁盤分區

xtend du -sh image c2c 浪費 code 服務 分享 bdc 一、df #查看文件系統的使用情況第一列文件系統中tmpfs結尾的都是臨時的文件系統,文件單位默認為kb df -h 自動適應文件大小的單位free可以查看swap的使用情況 df -i 查看

Nodejs學習筆記—Mongoose介紹和入門

tar 字段名 lse number 數組 int 位置 斷開 mongod 簡介   Mongoose是在node.js異步環境下對mongodb進行便捷操作的對象模型工具   那麽要使用它,首先你得裝上node.js和mongodb,關於mongodb的安裝和操作介紹可

ASP.NET Core 2 學習筆記Filters

span ans 黃色 返回 lec red addm spn using 原文:ASP.NET Core 2 學習筆記(十四)FiltersFilter是延續ASP.NET MVC的產物,同樣保留了五種的Filter,分別是Authorization Filter、Res

javaweb學習筆記:JSP4

目錄   製作高仿的JSTL標籤庫之核心標籤庫 《1》xiaohua.tld檔案: 《2》依附的各個類: 《3》imitate.core.jsp檔案: 《4》瀏覽器檢視:   製作高仿的JSTL標籤庫之核心標籤庫 通過自定義標籤,製

機器學習筆記:TensorFlow實戰六經典卷積神經網路:AlexNet

1 - 引言 2012年,Imagenet比賽冠軍的model——Alexnet [2](以第一作者alex命名)。這個網路算是一個具有突破性意義的模型 首先它證明了CNN在複雜模型下的有效性,然後GPU實現使得訓練在可接受的時間範圍內得到結果,讓之後的網路模型構建變得更加複雜,並且通過

Effective_STL 學習筆記 使用 reserve 來避免沒必要的重新分配

  對於vector和string,當需要更多的空間,以realloc等價的思想來增長。類似於realloc的操作有四個部分:   1. 分配新的記憶體塊,它有容器目前容量的幾倍。大部分實現中,vector和string的容量以2為因數增長。    也就是說,當容器必須擴充套件時,它的容量每次

python基礎教程第三版)學習筆記

第十四章 網路程式設計   鑑於Python提供的網路工具眾多,這裡只能簡要地介紹它的網路功能。 本章首先概述Python標準庫中的一些網路模組。然後討論SocketServer和相關的類,並介紹 地介紹同時處理多個連線的各種方法。最後,簡單地說一說Twisted,這是一個使用Pyth

Python學習筆記高階變數型別--字串

1、字串定義 字串 就是 一串字元,是程式語言中表示文字的資料型別   在Python中可以使用 一對雙引號"或者一對單引號'定義一個字串 雖然可以使用\"或者\’定義字串 如果字串內部需要使用',可以使用”定義字串 可以使用 索引 獲取一個字串中

GoLang學習筆記函式的可變引數

一個函式中最多隻有一個可變引數,如果引數列表中還有其他型別的引數,則可變引數寫在最後。 語法格式: func 函式名(引數名 ...型別)[(返回值列表)]{     //函式體 } 示例一,引數不定,引數的個數是0-N個,引數型別一致,返回值1個。 注意:引數是

Android開發學習筆記基礎UI控制元件之Spinner

Spinner:彈出一個列表選擇框,供使用者選擇。繼承自ViewGroup,因為可以容納很多列表項,因此它也是一個容器控制元件。 給Spinner指定資料來源的2種方法: 一、通過指定xml檔案來指

機器學習筆記:異常檢測

目錄 1)Problem motivation 2)Gaussian distribution 3)Algorithm 4)Developing and evaluating an anomaly detection system 5)Anomaly detection vs

大資料學習筆記-- hadoop

Table of Contents HDFS 儲存模型 架構模型  副本佈置 總結 ​ Hadoop簡介  HDFS 儲存模型 解釋 : 已上傳的Block大小不可改變的原因是每個Block大小一致,改變一個其他也會跟著改變

前端入門學習筆記CSS基礎CSS 規則與選擇器

CSS語法 CSS是由瀏覽器解釋的樣式規則,然後應用於文件中相應的元素。 樣式規則有三個部分:選擇器,屬性和值。 例如,標題顏色可以定義為: h1{color: red;} 選擇器{ 屬性: 值;} selec

Machine Learning學習筆記整合學習Boosting,Bagging,組合策略

整合學習 在一些資料探勘競賽中,後期我們需要對多個模型進行融合以提高效果時,常常會用到Bagging,Boosting,Stacking等這幾個框架演算法。 整合學習在機器學習演算法中具有較高的準確率,不足之處就是模型的訓練過程可能比較複雜,效率不是很高。目前接觸較多的整合學習主要

Redis 學習筆記Redis Cluster介紹與搭建

Redis Cluster 介紹與搭建 1. Redis Cluster介紹 Redis Cluster是Redis的分散式解決方案,在Redis 3.0版本正式推出的,有效解決了Redis分散式方面的需求。當遇到單機記憶體、併發、流量等瓶頸時,可以採用Cl

Nodejs學習筆記— Mongoose介紹和入門 && Nodejs學習筆記--- 與MongoDB的互動mongodb/node-mongodb-nativeMongoDB入門

目錄 簡介   MongoDB    開源,高效能的NoSQL資料庫;支援索引、叢集、複製和故障轉移、各種語言的驅動程式;高伸縮性;   node-mongodb-native   mongodb的nodejs驅動; MongoDB安裝(windows)   按照官方說明在win7 64位