应用跳转(打电话/短信/邮件/浏览器/其他应用)

简介

app中的跳转,分两种情况。第一种是启动内置的应用,一般的电话,浏览器,短信和邮件可以直接调用并添加参数. 第二种, 打开另一个外置的 app,如自己开发的应用,qq 微信微博等.
这些跳转都是可以通过openURL来实现。

内置应用跳转

浏览器

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"http://"]]) {
	 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
}

打电话

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel://"]]) {
	[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]];
	//        //拨号前询问,拨号后返回, 私有API,所以可能不会被审核通过
	//        [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"telprompt:// 10010"]];
}

发邮件

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mailto://"]]) {
	[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://wangyanchang21@163.com"]];
}

发短信

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"sms://"]]) {
	[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://10086"]];
}

另外, 还有一个内置的调用系统发短信的功能, 需要导入MessageUI.framework,并引入头文件#import <MessageUI/MessageUI.h>

调起发送短信功能:

if( [MFMessageComposeViewController canSendText]){

        MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
        messageController.view.backgroundColor = [UIColor whiteColor];
        messageController.delegate = self;
        messageController.messageComposeDelegate = self;
        messageController.body = message;
        messageController.recipients = @[phoneNum];
        messageController.navigationBar.tintColor = [UIColor blackColor];

        //推到发送试图控制器
        [self presentViewController:messageController animated:YES completion:nil];
    }else{
        // Toast: 该设备不支持短信功能
    }
//发送短信后回调的方法
-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    switch (result) {
        case MessageComposeResultCancelled:
            //已取消发送短信
                        break;
        case MessageComposeResultFailed:
			//短信发送失败
            break;
        case MessageComposeResultSent:
			//短信发送成功
            break;
        default:
            break;
    }
    [self dismissViewControllerAnimated:YES completion:nil];
}

外置应用跳转

第二种情况是要跳转至自己开发的app,这种情况则要为将要打开的app注册一个URL协议。这个可以在项目的文件info.plist中注册。主要操作为:
Step1. 右键,选择“Add Row”
Step2. Key值选择“URL types”
Step3. 打开“Item 0″,然后为该key增加一个URL identifier。可以是任何值,但建议用“反域名”(例如 “com.fcplayer.testHello”)。
Step4. 在“Item 0”下再加一行。
Step5. 选择“URL Schemes” 作为Key。
Step6. 输入你的URL协议名 (例如“testHello://” 应写做“testHello”)。如果有必要,你可以在这里加入多个协议。

其实在打开的时候只需要URL Schemes即可,URL identifier是可选项。如果需要传送参数,可以在URL Schemes://添加你的参数,格式和网页开发的传递参数差不多。(又或者URL Schemes://URL identifier@添加的参数)关键是要和接收参数方定义好处理的方式。然后在需要打开的地方添加代码:

以下是当前需要被跳转的 App 中plist 文件中的注册的 URL:
这里写图片描述

当前 App 设置URL 为 testHello, 所以将下面代码写入其他项目, 将会自动跳入本 App

    NSString *url = @"testHello://";
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值