第三十六篇:发送方式与真机调试过程

2024-05-12 20:08

本文主要是介绍第三十六篇:发送方式与真机调试过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.打电话:

》打电话-方法1

•最简单最直接的方式:直接跳到拨号界面

NSURL *url= [NSURL URLWithString:@"tel://10010"];

[[UIApplication sharedApplication] openURL:url];

•缺点

电话打完后,不会自动回到原应用,直接停留在通话记录界面

打电话 - 方法 2

•拨号之前会弹框询问用户是否拨号,拨完后能自动回到原应用

NSURL *url= [NSURL URLWithString:@"telprompt://10010"];

[[UIApplication sharedApplication] openURL:url];

•缺点

因为是私有API,所以可能不会被审核通过

打电话 - 方法 3

•创建一个UIWebView来加载URL,拨完后能自动回到原应用

if (_webView == nil) {

   _webView = [[UIWebView alloc] initWithFrame:CGRectZero];

}

[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel://10010"]]];

需要注意的是:这个webView千万不要添加到界面上来,不然会挡住其他界面


2.发短信:

发短信-方法1

•直接跳到发短信界面,但是不能指定短信内容,而且不能自动回到原应用

NSURL *url= [NSURL URLWithString:@"sms://10010"];

[[UIApplication sharedApplication] openURL:url];

发短信 - 方法 2

•如果想指定短信内容,那就得使用MessageUI框架
•包含主头文件

#import<MessageUI/MessageUI.h>

•显示发短信的控制器

MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc] init];

// 设置短信内容

vc.body = @"吃饭了没?";

// 设置收件人列表

vc.recipients = @[@"10010", @"02010010"];

// 设置代理

vc.messageComposeDelegate = self;

// 显示控制器(Moda方式显示)

[self presentViewController:vc animated:YES completion:nil];

•  MFMessageComposeViewController代理方法,当短信界面关闭的时候调用,发完后会自动回到原应用

- (void)messageComposeViewController:(MFMessageComposeViewController*)controller didFinishWithResult:(MessageComposeResult)result

{

   //关闭短信界面

   [controller dismissViewControllerAnimated:YES completion:nil];

   if(result == MessageComposeResultCancelled) {

        NSLog(@"取消发送");

   } else if(result == MessageComposeResultSent) {

        NSLog(@"已经发出");

   } else {

        NSLog(@"发送失败");

   }

}


3.发邮件

发邮件-方法1

•用自带的邮件客户端,发完邮件后不会自动回到原应用

NSURL *url= [NSURL URLWithString:@"mailto://10010@qq.com"];

[[UIApplication sharedApplication] openURL:url];

发邮件 - 方法 2

•跟发短信的第2种方法差不多,只不过控制器类名叫做:MFMailComposeViewController
•假设发送的邮件内容如右图所示,代码实现

// 不能发邮件
if (![MFMailComposeViewController canSendMail]) return;MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];// 设置邮件主题
[vc setSubject:@"会议"];
// 设置邮件内容
[vc setMessageBody:@"今天下午开会吧" isHTML:NO];
// 设置收件人列表
[vc setToRecipients:@[@"643055866@qq.com"]];
// 设置抄送人列表
[vc setCcRecipients:@[@"1234@qq.com"]];
// 设置密送人列表
[vc setBccRecipients:@[@"56789@qq.com"]];// 添加附件(一张图片)
UIImage *image = [UIImage imageNamed:@"lufy.jpeg"];
NSData *data = UIImageJPEGRepresentation(image, 0.5);
[vc addAttachmentData:data mimeType:@"image/jepg" fileName:@"lufy.jpeg"];// 设置代理
vc.mailComposeDelegate = self;
// 显示控制器
[self presentViewController:vc animated:YES completion:nil];

•邮件发送后的代理方法回调,发完后会自动回到原应用
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{// 关闭邮件界面[controller dismissViewControllerAnimated:YES completion:nil];if (result == MFMailComposeResultCancelled) {NSLog(@"取消发送");} else if (result == MFMailComposeResultSent) {NSLog(@"已经发出");} else {NSLog(@"发送失败");}
}


4.打开其他常见文件
•如果想打开一些常见文件,比如html、txt、PDF、PPT等,都可以使用UIWebView打开
•只需要告诉UIWebView文件的URL即可
•至于打开一个远程的共享资源,比如http协议的,也可以调用系统自带的Safari浏览器:

NSURL *url= [NSURL URLWithString:@”http://www.baidu.com"];

[[UIApplication sharedApplication] openURL:url];


5.应用间跳转

•有时候,需要在本应用中打开其他应用,比如从A应用中跳转到B应用
•首先,B应用得有自己的URL地址(在Info.plist中配置)

B应用的URL地址就是:mj://ios.itcast.cn

•接着在A应用中使用 UIApplication完成跳转

NSURL *url= [NSURL URLWithString:@"mj://ios.itcast.cn"];

[[UIApplication sharedApplication] openURL:url];

应用评分

•为了提高应用的用户体验,经常需要邀请用户对应用进行评分
•应用评分无非就是跳转到AppStore展示自己的应用,然后由用户自己撰写评论
•如何跳转到AppStore,并且展示自己的应用
Ø方法1

NSString *appid= @"444934666";

NSString *str= [NSString stringWithFormat:

                 @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@",appid];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

Ø方法2

NSString *str= [NSString stringWithFormat:

                 @"itms-apps://itunes.apple.com/cn/app/id%@?mt=8",appid];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];



6.真机调试

》真机调试的主要步骤
1. 登录开发者主页
2. 生成 cer 证书:cer是一个跟电脑相关联的证书文件,让电脑具备真机调试的功能
3. 添加 App ID:调试哪些app?
4. 注册真机设备:哪台设备需要做真机调试?
5. 生成 MobileProvision 文件:结合2、3、4生成一个手机规定文件
6. 导入 cer MobileProvision 文件

》最终会得到2个文件
Ø Cer文件:让电脑具备真机调试的功能
Ø MobileProvision文件:哪台设备、哪些app、哪台电脑需要做真机调试?

(1)真机调试的步骤01-登录开发者主页

•登录开发者主页

https://developer.apple.com/membercenter/index.action

•管理证书(前提:得花99$或299$加入开发者计划)


(2)真机调试的步骤02-生成cer证书

•添加cer证书


•利用钥匙串生成cer签名请求文件




•选择cer签名请求文件,生成并且下载cer证书



(3)真机调试的步骤03-添加AppID


(4)真机调试的步骤04-注册真机设备

•利用Xcode查看真机设备的唯一标识(插上USB数据线)


填写设备名称和唯一标识

(5) 真机调试的步骤05-生成MobileProvision文件

•添加MobileProvision文件



•选择App ID

选择cer证书


选择真机设备


•填写MobileProvision文件名

下载MobileProvision文件


(6)真机调试的步骤06-导入cer、MobileProvision文件

•经过前面的几个步骤,已经得到2个文件

双击导入cer文件(可以打开钥匙串确认证书是否有效)



双击导入MobileProvision文件(打开Xcode、连接好真机)


•打开任意程序,选择真机设别,点击运行(第一次运行会出现右图)


>>替换旧的调试证书

有时候需要把项目里面配置的旧调试证书换掉




这篇关于第三十六篇:发送方式与真机调试过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983613

相关文章

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

AJAX请求上传下载进度监控实现方式

《AJAX请求上传下载进度监控实现方式》在日常Web开发中,AJAX(AsynchronousJavaScriptandXML)被广泛用于异步请求数据,而无需刷新整个页面,:本文主要介绍AJAX请... 目录1. 前言2. 基于XMLHttpRequest的进度监控2.1 基础版文件上传监控2.2 增强版多

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co