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

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

相关文章

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两

MybatisPlus中几种条件构造器运用方式

《MybatisPlus中几种条件构造器运用方式》QueryWrapper是Mybatis-Plus提供的一个用于构建SQL查询条件的工具类,提供了各种方法如eq、ne、gt、ge、lt、le、lik... 目录版本介绍QueryWrapperLambdaQueryWrapperUpdateWrapperL

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

java敏感词过滤的实现方式

《java敏感词过滤的实现方式》文章描述了如何搭建敏感词过滤系统来防御用户生成内容中的违规、广告或恶意言论,包括引入依赖、定义敏感词类、非敏感词类、替换词类和工具类等步骤,并指出资源文件应放在src/... 目录1.引入依赖2.定义自定义敏感词类3.定义自定义非敏感类4.定义自定义替换词类5.最后定义工具类

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot的内嵌和外置tomcat的实现方式

《SpringBoot的内嵌和外置tomcat的实现方式》本文主要介绍了在SpringBoot中定制和修改Servlet容器的配置,包括内嵌式和外置式Servlet容器的配置方法,文中通过示例代码介绍... 目录1.内嵌如何定制和修改Servlet容器的相关配置注册Servlet三大组件Servlet注册详