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

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

相关文章

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结