Swift如何为设置中心添加常用功能

2020-01-09 00:09:19刘景俊

前言

在我们开发所有的应用中,通常会提供包含多项功能的设置中心。这些功能可以包括,给用户推荐自己的其他作品、邀请用户好评、提供反馈通道、邀请用户分享应用、打开官网或某些其他地址。 这些功能虽然用户使用频率不高,但对于应用的设置中心是必备的。

1.跳转到AppStore,邀请好评或推荐其他应用

2.提供系统邮件反馈通道

3.调取系统分享功能分享应用

4.在应用内打开网页,实现官方网址、应用更新说明或打开其他网址

通常设置中心由TableView或CollectionView创建,在didSelectRowAt中添加不同的点击反馈即可,这里就不再描述。

一、跳转到AppStore

应用内跳转到AppStore可以通过设置对应的应用地址即可,因此可以跳转到其他应用界面实现推荐应用,也可以跳转到自身应用的地址邀请用户好评。OneX系列产品都拥有推荐和评价的入口,两种入口的实现方式也都是一样的。 在不同的情况下我们只需要改变urlString末尾的ID即可,当让也可以封装在某一个函数中,通过参数进行改变具体的跳转地址。


let urlString = "itms-apps://itunes.apple.com/app/id1250290965"
if let url = URL(string: urlString) {
 //根据iOS系统版本,分别处理
 if #available(iOS 10, *) {
 UIApplication.shared.open(url, options: [:],
     completionHandler: {
     (success) in
 })
 } else {
 UIApplication.shared.openURL(url)
 }
}

swift,跳转,appstore

二、邮件反馈功能

第一,需要导入框架MessageUI.framework,在项目设置Build Phases的Link Binary With Libraries中添加MessageUI.framework。 第二,在使用邮件反馈功能的页面文件中导入头文件import MessageUI。 第三,给所在Controller加上协议MFMailComposeViewControllerDelegate。

完成以上步骤之后,我们就可以开始写具体的使用代码了。 发送反馈邮件时,为了方便我们收到邮件时辨别是用户发来的反馈邮件,同时了解用户的系统、版本等信息,我们在发送函数中设置好标题与默认正文。 mailComposeVC.setToRecipients中添加收件邮箱地址,mailComposeVC.setSubject中添加邮件标题,mailComposeVC.setMessageBody设置正文内容。


//邮件发送函数
func configuredMailComposeViewController() -> MFMailComposeViewController {

 let mailComposeVC = MFMailComposeViewController()
 mailComposeVC.mailComposeDelegate = self

 //获取设备信息
 let deviceName = UIDevice.current.name
 // let deviceModel = UIDevice.current.model
 let systemVersion = UIDevice.current.systemVersion
 let deviceUUID = UIDevice.current.identifierForVendor?.uuidString

 //获取APP信息
 let infoDic = Bundle.main.infoDictionary
 // 获取App的版本号
 let appVersion = infoDic?["CFBundleShortVersionString"] ?? "appVersion"
 // 获取App的build版本
 let appBuildVersion = infoDic?["CFBundleVersion"] ?? "appBuildVersion"
 // 获取App的名称
 let appName = infoDic?["CFBundleDisplayName"] ?? "OneClock"

 //设置邮件地址、主题及正文
 mailComposeVC.setToRecipients(["<xdehang@gmail.com>"])
 mailComposeVC.setSubject("OneScreen "+String(describing: appVersion)+" - "+NSLocalizedString("FeedBack Mail From", comment: "FeedBack Mail From")+" "+deviceName)

 let content:String = "n n n n Device:(deviceName)n System:(systemVersion)n App Version:(String(describing: appVersion))"

 mailComposeVC.setMessageBody(NSLocalizedString("<Start To Write Mail>", comment: "<Start To Write Mail>")+content, isHTML: false)
 return mailComposeVC
}