最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift如何為設(shè)置中心添加常用功能

 更新時(shí)間:2018年05月04日 08:35:45   作者:OneSwift  
這篇文章主要給大家介紹了關(guān)于Swift如何為設(shè)置中心添加常用功能的相關(guān)資料,包含了跳轉(zhuǎn)到AppStore、郵件反饋功能、系統(tǒng)分享功能以及打開(kāi)某些網(wǎng)址等功能,需要的朋友可以參考借鑒,下面來(lái)一起看看吧

前言

在我們開(kāi)發(fā)所有的應(yīng)用中,通常會(huì)提供包含多項(xiàng)功能的設(shè)置中心。這些功能可以包括,給用戶推薦自己的其他作品、邀請(qǐng)用戶好評(píng)、提供反饋通道、邀請(qǐng)用戶分享應(yīng)用、打開(kāi)官網(wǎng)或某些其他地址。 這些功能雖然用戶使用頻率不高,但對(duì)于應(yīng)用的設(shè)置中心是必備的。

1.跳轉(zhuǎn)到AppStore,邀請(qǐng)好評(píng)或推薦其他應(yīng)用

2.提供系統(tǒng)郵件反饋通道

3.調(diào)取系統(tǒng)分享功能分享應(yīng)用

4.在應(yīng)用內(nèi)打開(kāi)網(wǎng)頁(yè),實(shí)現(xiàn)官方網(wǎng)址、應(yīng)用更新說(shuō)明或打開(kāi)其他網(wǎng)址

通常設(shè)置中心由TableView或CollectionView創(chuàng)建,在didSelectRowAt中添加不同的點(diǎn)擊反饋即可,這里就不再描述。

一、跳轉(zhuǎn)到AppStore

應(yīng)用內(nèi)跳轉(zhuǎn)到AppStore可以通過(guò)設(shè)置對(duì)應(yīng)的應(yīng)用地址即可,因此可以跳轉(zhuǎn)到其他應(yīng)用界面實(shí)現(xiàn)推薦應(yīng)用,也可以跳轉(zhuǎn)到自身應(yīng)用的地址邀請(qǐng)用戶好評(píng)。OneX系列產(chǎn)品都擁有推薦和評(píng)價(jià)的入口,兩種入口的實(shí)現(xiàn)方式也都是一樣的。 在不同的情況下我們只需要改變urlString末尾的ID即可,當(dāng)讓也可以封裝在某一個(gè)函數(shù)中,通過(guò)參數(shù)進(jìn)行改變具體的跳轉(zhuǎn)地址。

let urlString = "itms-apps://itunes.apple.com/app/id1250290965"
if let url = URL(string: urlString) {
 //根據(jù)iOS系統(tǒng)版本,分別處理
 if #available(iOS 10, *) {
 UIApplication.shared.open(url, options: [:],
     completionHandler: {
     (success) in
 })
 } else {
 UIApplication.shared.openURL(url)
 }
}

二、郵件反饋功能

第一,需要導(dǎo)入框架MessageUI.framework,在項(xiàng)目設(shè)置Build Phases的Link Binary With Libraries中添加MessageUI.framework。 第二,在使用郵件反饋功能的頁(yè)面文件中導(dǎo)入頭文件import MessageUI。 第三,給所在Controller加上協(xié)議MFMailComposeViewControllerDelegate。

完成以上步驟之后,我們就可以開(kāi)始寫(xiě)具體的使用代碼了。 發(fā)送反饋郵件時(shí),為了方便我們收到郵件時(shí)辨別是用戶發(fā)來(lái)的反饋郵件,同時(shí)了解用戶的系統(tǒng)、版本等信息,我們?cè)诎l(fā)送函數(shù)中設(shè)置好標(biāo)題與默認(rèn)正文。 mailComposeVC.setToRecipients中添加收件郵箱地址,mailComposeVC.setSubject中添加郵件標(biāo)題,mailComposeVC.setMessageBody設(shè)置正文內(nèi)容。

//郵件發(fā)送函數(shù)
func configuredMailComposeViewController() -> MFMailComposeViewController {

 let mailComposeVC = MFMailComposeViewController()
 mailComposeVC.mailComposeDelegate = self

 //獲取設(shè)備信息
 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的版本號(hào)
 let appVersion = infoDic?["CFBundleShortVersionString"] ?? "appVersion"
 // 獲取App的build版本
 let appBuildVersion = infoDic?["CFBundleVersion"] ?? "appBuildVersion"
 // 獲取App的名稱(chēng)
 let appName = infoDic?["CFBundleDisplayName"] ?? "OneClock"

 //設(shè)置郵件地址、主題及正文
 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
}

再需要添加郵件系統(tǒng)提示和郵件發(fā)送檢測(cè)。

//郵件系統(tǒng)提示
func showSendMailErrorAlert() {
 let sendMailErrorAlert = UIAlertController(title: NSLocalizedString("Unable To Send", comment: "Unable To Send"), message: NSLocalizedString("Your device has not been set up, please set in the mail application and then try to send.", comment: "Your device has not been set up, please set in the mail application and then try to send."), preferredStyle: .alert)
 sendMailErrorAlert.addAction(UIAlertAction(title: NSLocalizedString("Confirm", comment: "Confirm action title"), style: .default) { _ in })
 self.present(sendMailErrorAlert, animated: true){}

}
//郵件發(fā)送檢測(cè)
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {

 switch result.rawValue {
 case MFMailComposeResult.cancelled.rawValue:
 print("取消發(fā)送")
 case MFMailComposeResult.sent.rawValue:
 print("發(fā)送成功")
 default:
 break
 }
 self.dismiss(animated: true, completion: nil)
}

最后我們?cè)谡{(diào)用郵件反饋的地方,需要先判斷是否能夠發(fā)送,如果不能發(fā)送通過(guò)提示信息告訴用戶失敗原因,如果可以發(fā)送將成功調(diào)取發(fā)送窗口。 在需要郵件反饋的地方:

if MFMailComposeViewController.canSendMail() {
 //注意這個(gè)實(shí)例要寫(xiě)在if block里,否則無(wú)法發(fā)送郵件時(shí)會(huì)出現(xiàn)兩次提示彈窗(一次是系統(tǒng)的)
 let mailComposeViewController = configuredMailComposeViewController()
 self.present(mailComposeViewController, animated: true, completion: nil)

} else {
 self.showSendMailErrorAlert()
}

三、系統(tǒng)分享功能

分享前,我們需要設(shè)置好分享的信息:標(biāo)題、圖片、鏈接。

var webUrl:String = "https://itunes.apple.com/cn/app/id1355476695"
var urlTitle:String = "OneScreen"
var urlImage:UIImage = #imageLiteral(resourceName: "onescreen_icon")

這里使用了var,是為了在特殊情況下改變他們的值,具體的調(diào)用方式如下:

let shareVC:UIActivityViewController = UIActivityViewController(activityItems: [self.urlTitle,self.urlImage,self.webUrl], applicationActivities: nil)

self.present(shareVC, animated: true, completion: {
 print("shareVC success")
})

四、打開(kāi)某些網(wǎng)址

打開(kāi)網(wǎng)址可以實(shí)現(xiàn)“官方網(wǎng)址”、“應(yīng)用更新說(shuō)明”功能,更新說(shuō)明我們可以通過(guò)更新Web內(nèi)容快速高速用戶更新列表。如果你的應(yīng)用需要比較多的教程,也可以通過(guò)網(wǎng)頁(yè)的形式展現(xiàn)。為了方便用戶反饋,我通常會(huì)增加一個(gè)微博入口,讓用戶打開(kāi)微博地址快速與我聯(lián)系進(jìn)行反饋。

這個(gè)功能我們需要?jiǎng)?chuàng)建一個(gè)承載網(wǎng)頁(yè)內(nèi)容的Web頁(yè)面,因此需要先添加帶有WebView的Controller。 在其他頁(yè)面打開(kāi)Web時(shí),通過(guò)傳遞參數(shù)來(lái)告訴WebView具體呈現(xiàn)哪一個(gè)網(wǎng)址。

例如在OneDay的WebViewController中:

override func viewDidLoad() {
 super.viewDidLoad()

 // Do any additional setup after loading the view.
 switch webIndex {
 case 0:
  self.urlString = "https://weibo.com/bujidehang"
 case 1:
  self.urlString = "http://www.ohweonline.com/oneday"
 case 2:
  self.urlString = "http://www.ohweonline.com/oneday/updateCN.html"
 case 3:
  self.urlString = "http://www.ohweonline.com/oneday/updateEN.html"
 default:
  self.urlString = "http://www.ohweonline.com/oneday"
 }

 let urlobj = URL(string:self.urlString)
 let request = URLRequest(url:urlobj!)
 webView.loadRequest(request)
 print(webView.isLoading)
}

在設(shè)置頁(yè)面中,我們開(kāi)始打開(kāi)Web:

print("to webview")
self.webIndex = 1
self.performSegue(withIdentifier: "viewWebView", sender: self)

將WebIndex傳遞給WebViewController,以方便判斷具體的網(wǎng)址。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
 if segue.identifier == "viewWebView"{
  let dest = segue.destination as! WebViewController
  dest.webIndex = self.webIndex
 }
}

這樣就實(shí)現(xiàn)了所有相關(guān)網(wǎng)址的打開(kāi)。實(shí)際在網(wǎng)頁(yè)加載頁(yè)面中還有一些特性和功能,將在下一期文章中詳細(xì)說(shuō)明。 打開(kāi)網(wǎng)址

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Swift中的訪問(wèn)控制和protected

    Swift中的訪問(wèn)控制和protected

    這篇文章主要介紹了Swift中的訪問(wèn)控制和protected,本文主要講解為什么Swift沒(méi)有類(lèi)似protected的選項(xiàng),需要的朋友可以參考下
    2015-05-05
  • Swift初始化器與可選鏈的使用方法介紹

    Swift初始化器與可選鏈的使用方法介紹

    初始化器初始化是準(zhǔn)備類(lèi)、結(jié)構(gòu)或枚舉的實(shí)例以供使用的過(guò)程。此過(guò)程涉及為該實(shí)例上的每個(gè)存儲(chǔ)屬性設(shè)置初始值,并執(zhí)行在新實(shí)例準(zhǔn)備就緒可供使用之前所需的任何其他設(shè)置或初始化,可選鏈?zhǔn)且环N可以請(qǐng)求和調(diào)用屬性、方法和子腳本的過(guò)程,用于請(qǐng)求或調(diào)用的目標(biāo)可能為nil
    2022-08-08
  • Swift中的可變參數(shù)函數(shù)介紹

    Swift中的可變參數(shù)函數(shù)介紹

    這篇文章主要介紹了Swift中的可變參數(shù)函數(shù)介紹,本文實(shí)現(xiàn)了和Objective-C調(diào)用方法一樣的變參數(shù)函數(shù),需要的朋友可以參考下
    2015-01-01
  • Swift初始化方法的使用介紹

    Swift初始化方法的使用介紹

    Swift有著超級(jí)嚴(yán)格的初始化方法,不僅強(qiáng)化了designated初始化方法的地位,所有不加修飾的init方法都需要在方法中確保非Optional的實(shí)例變量被賦值初始化,下面這篇文章主要給大家介紹了關(guān)于Swift中初始化init的相關(guān)資料,需要的朋友可以參考下。
    2022-08-08
  • Swift泛型Generics淺析講解

    Swift泛型Generics淺析講解

    泛型代碼讓你能根據(jù)你所定義的要求,寫(xiě)出可以用于任何類(lèi)型的靈活的、可復(fù)用的函數(shù)。泛型是 Swift 最強(qiáng)大的特性之一,很多 Swift 標(biāo)準(zhǔn)庫(kù)是基于泛型代碼構(gòu)建的
    2022-08-08
  • 初探Swift3.0帶來(lái)的變化匯總

    初探Swift3.0帶來(lái)的變化匯總

    這個(gè)周末抽空看了下swift3.0的變化,今天小編通過(guò)本教程給大家分享Swift3.0帶來(lái)的變化,非常不錯(cuò),感興趣的朋友參考下吧
    2016-12-12
  • Swift中字典與JSON轉(zhuǎn)換的方法

    Swift中字典與JSON轉(zhuǎn)換的方法

    Swift中經(jīng)常會(huì)遇到字典和字符串的相互轉(zhuǎn)換,本篇文章主要介紹了Swift中字典與JSON轉(zhuǎn)換的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Swift并發(fā)系統(tǒng)并行運(yùn)行多個(gè)任務(wù)使用詳解

    Swift并發(fā)系統(tǒng)并行運(yùn)行多個(gè)任務(wù)使用詳解

    這篇文章主要為大家介紹了Swift并發(fā)系統(tǒng)并行運(yùn)行多個(gè)任務(wù)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 深入講解Swift的內(nèi)存管理

    深入講解Swift的內(nèi)存管理

    不管在什么語(yǔ)言里,內(nèi)存管理的內(nèi)容都很重要,Swift使用自動(dòng)引用計(jì)數(shù)來(lái)管理應(yīng)用程序的內(nèi)存使用。這表示內(nèi)存管理已經(jīng)是Swift的一部分,在大多數(shù)情況下,你并不需要考慮內(nèi)存的管理。本文主要介紹了Swift中內(nèi)存管理的相關(guān)資料,需要的朋友可以參考。
    2017-03-03
  • Swift版使用ThPullRefresh實(shí)現(xiàn)下拉上拉刷新數(shù)據(jù)

    Swift版使用ThPullRefresh實(shí)現(xiàn)下拉上拉刷新數(shù)據(jù)

    這篇文章主要介紹了Swift版使用ThPullRefresh實(shí)現(xiàn)下拉上拉刷新數(shù)據(jù),需要的朋友可以參考下
    2016-01-01

最新評(píng)論

铜川市| 南和县| 景东| 高淳县| 施秉县| 黔江区| 南雄市| 西乌珠穆沁旗| 博乐市| 镇江市| 文水县| 台中县| 阳曲县| 宁强县| 兰州市| 万山特区| 乌拉特中旗| 宁南县| 宜黄县| 科技| 团风县| 神农架林区| 库尔勒市| 宁蒗| 定西市| 瑞丽市| 广宁县| 南靖县| 榆社县| 商水县| 鱼台县| 丹东市| 田林县| 界首市| 天气| 淄博市| 行唐县| 安达市| 镇远县| 疏勒县| 德庆县|