iOS調(diào)用系統(tǒng)短信

起因: 產(chǎn)品提個需求武鲁,調(diào)起短信頁面之后,要把短信內(nèi)容傳輸過去蝠检,且點擊取消要返回短信列表頁面沐鼠,而不是返回 APP。叹谁。饲梭。

下面來分步解決需求。需求可以分兩個部分:
1.講短信內(nèi)容傳輸?shù)蕉绦彭撁?br> 2.取消或發(fā)送后留在短信頁面

1.短信內(nèi)容傳輸?shù)蕉绦彭撁?/h4>

實現(xiàn)此功能焰檩,一般使用程序內(nèi)調(diào)用系統(tǒng)憔涉。首先將頭文件引入
#import <MessageUI/MessageUI.h>
實現(xiàn)代碼:

if( [MFMessageComposeViewController canSendText]) {
        MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init];
        controller.recipients = @[@"10086"];//發(fā)送短信的號碼,數(shù)組形式入?yún)?        controller.navigationBar.tintColor = [UIColor redColor];
        controller.body = @"body"; //此處的body就是短信將要發(fā)生的內(nèi)容
        controller.messageComposeDelegate = self;
        [self presentViewController:controller animated:YES completion:nil];
        [[[[controller viewControllers] lastObject] navigationItem] setTitle:@"title"];//修改短信界面標題
    }
    else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示信息"
                                                        message:@"該設(shè)備不支持短信功能"
                                                       delegate:nil
                                              cancelButtonTitle:@"確定"
                                              otherButtonTitles:nil, nil];
        [alert show];
    }

如要獲取發(fā)送狀態(tài)析苫,遵守代理 MFMessageComposeViewControllerDelegate 并實現(xiàn)代理方法

-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
    [self dismissViewControllerAnimated:YES completion:nil];
    switch (result) {
        case MessageComposeResultSent:
            //信息傳送成功
            break;
        case MessageComposeResultFailed:
            //信息傳送失敗
            break;
        case MessageComposeResultCancelled:
            //信息被用戶取消傳送
            break;
        default:
            break;
    }
}

此方法優(yōu)點在于
1.發(fā)完短信或取消后能直接返回 APP
2.可將多個號碼傳輸?shù)蕉绦彭撁?/strong>

2.取消或發(fā)送后留在短信頁面

這個就很簡單啦兜叨,直接調(diào)用 openURL穿扳。發(fā)完短信或取消后將會到短信列表頁,不會直接返A(chǔ)PP国旷。但只能把一個號碼傳輸?shù)蕉绦彭撁?/strong>

    NSString *phoneStr = [NSString stringWithFormat:@"10086"];//發(fā)短信的號碼
    NSString *urlStr = [NSString stringWithFormat:@"sms://%@", phoneStr];
    NSURL *url = [NSURL URLWithString:urlStr];
    [[UIApplication sharedApplication] openURL:url];

至此矛物,兩個需求都分別完成,但是并沒有達到產(chǎn)品的要求跪但。經(jīng)過分析得知履羞,要停留在短信頁面,只能用采取第二種方法屡久。所以吧雹,接下來需要解決的是怎么才能用第二種方法把短信內(nèi)容傳過去尔苦。

觀察 openURL 傳入的參數(shù) sms://手機號碼蛛砰,這種格式于 url 有些相似,url 要拼接多個參數(shù)用 &郭蕉,所以可以嘗試一下在號碼后拼接一個參數(shù)蛤售。在第一種方法中丁鹉,短信內(nèi)容賦值給 body,所以嘗試把入?yún)⑵闯?sms://手機號碼&body=短信內(nèi)容悴能。就這樣完成需求揣钦。

    NSString *phoneStr = [NSString stringWithFormat:@"10086"];//發(fā)短信的號碼
    NSString *smsContentStr = [NSString stringWithFormat:@"短信內(nèi)容"];
    NSString *urlStr = [NSString stringWithFormat:@"sms://%@&body=%@", phoneStr, smsContentStr];
    NSURL *url = [NSURL URLWithString:urlStr];
    [[UIApplication sharedApplication] openURL:url];

關(guān)于拼參數(shù)的方法,并不是所有都是顯而易見的漠酿,也遇到過很多問題:例如是要 & 還是用 ? 來拼接冯凹;短信內(nèi)容前是否需要帶參數(shù)名等等問題,經(jīng)常很多次嘗試最終才得到的結(jié)果炒嘲,深感不易宇姚。

2019.3.29 更新

之前一直沒注意傳輸中文, 會導(dǎo)致 URL 為 nil 的問題, 樓下有人提醒, 特此來修改

        NSString *phoneStr = [NSString stringWithFormat:@"10086"];//發(fā)短信的號碼
        NSString *smsContentStr = [NSString stringWithFormat:@"短信內(nèi)容"];
        NSString *urlStr = [NSString stringWithFormat:@"sms://%@&body=%@", phoneStr, smsContentStr];
        urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; // 對中文進行編碼
        NSURL *url = [NSURL URLWithString:urlStr];
        
        if (@available(iOS 10.0, *)) {
            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
        } else {
            [[UIApplication sharedApplication] openURL:url];
        }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夫凸,隨后出現(xiàn)的幾起案子浑劳,更是在濱河造成了極大的恐慌,老刑警劉巖夭拌,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件魔熏,死亡現(xiàn)場離奇詭異,居然都是意外死亡鸽扁,警方通過查閱死者的電腦和手機蒜绽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桶现,“玉大人躲雅,你說我怎么就攤上這事」牵” “怎么了吏夯?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵此蜈,是天一觀的道長。 經(jīng)常有香客問我噪生,道長裆赵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任跺嗽,我火速辦了婚禮战授,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘桨嫁。我一直安慰自己植兰,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布璃吧。 她就那樣靜靜地躺著楣导,像睡著了一般。 火紅的嫁衣襯著肌膚如雪畜挨。 梳的紋絲不亂的頭發(fā)上筒繁,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音巴元,去河邊找鬼毡咏。 笑死,一個胖子當(dāng)著我的面吹牛逮刨,可吹牛的內(nèi)容都是我干的呕缭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼修己,長吁一口氣:“原來是場噩夢啊……” “哼恢总!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起箩退,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤离熏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后戴涝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡钻蔑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年啥刻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咪笑。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡可帽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窗怒,到底是詐尸還是另有隱情映跟,我是刑警寧澤蓄拣,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站努隙,受9級特大地震影響球恤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荸镊,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一咽斧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧躬存,春花似錦张惹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盾剩,卻和暖如春雷激,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背彪腔。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工侥锦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人德挣。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓恭垦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親格嗅。 傳聞我的和親對象是個殘疾皇子番挺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 今天要實現(xiàn)一個功能,向通訊錄中的聯(lián)系人發(fā)送短信屯掖,在短信中附帶 app 的下載地址玄柏,來推廣 app。需要在 app ...
    一位小碼農(nóng)閱讀 2,349評論 1 2
  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,916評論 6 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,742評論 25 707
  • 文藝女青年三毛贴铜,曾經(jīng)作劇本《滾滾紅塵》粪摘,將比她更文藝的文藝女青年張愛玲好好意淫了一把。電影中的才女沈韶華有著與張愛...
    高逼格的幻想家閱讀 2,792評論 6 34
  • 周末早上燒碗海鮮面绍坝,配料:海蝦徘意、蝦仁、香菇轩褐、蘿卜椎咧、鰻魚干、大蔥把介、包菜勤讽、料酒蟋座、白糖、鹽脚牍、醋向臀、少許醬油∧#可惜今天缺了條魚飒硅。
    wby000001閱讀 275評論 0 1