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

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

相关文章

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

Java中ArrayList的8种浅拷贝方式示例代码

《Java中ArrayList的8种浅拷贝方式示例代码》:本文主要介绍Java中ArrayList的8种浅拷贝方式的相关资料,讲解了Java中ArrayList的浅拷贝概念,并详细分享了八种实现浅... 目录引言什么是浅拷贝?ArrayList 浅拷贝的重要性方法一:使用构造函数方法二:使用 addAll(

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO