欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IOS 應(yīng)用內(nèi)顯示 AppStore 某個(gè)應(yīng)用的詳情

 更新時(shí)間:2016年07月22日 11:36:55   投稿:lqh  
本文主要介紹ISO應(yīng)用內(nèi)打開AppStorn 顯示某個(gè)應(yīng)用詳情,這里幫大家總結(jié)了兩種方法,大家對(duì)比一下,在項(xiàng)目中選擇應(yīng)用,

前言

  應(yīng)用內(nèi)跳轉(zhuǎn)到 AppStore 的文章很多,一般都是用 SKStoreProductViewController 來實(shí)現(xiàn)的,不知道有沒有在意一個(gè)問題:打開很慢!!怎么忍?!

 正文

  一般網(wǎng)上的文章的代碼:

 func openAppStore(url: String){
  if let number = url.rangeOfString("[0-9]{9}", options: NSStringCompareOptions.RegularExpressionSearch) {
   let appId = url.substringWithRange(number)
   let productView = SKStoreProductViewController()
   productView.delegate = self
   productView.loadProductWithParameters([SKStoreProductParameterITunesItemIdentifier : appId], completionBlock: { [weak self](result: Bool, error: NSError?) -> Void in
    if result {
     self?.presentViewController(productView, animated: true, completion: nil)
    } else {
     self?.openAppUrl(url)
    }
   })
  } else {
   openAppUrl(url)
  }
 }
 
 private func openAppUrl(url: String) {
  let nativeURL = url.stringByReplacingOccurrencesOfString("https:", withString: "itms-apps:")
  if UIApplication.sharedApplication().canOpenURL(NSURL(string:nativeURL)!) {
   UIApplication.sharedApplication().openURL(NSURL(string:url)!)
  }
 }
 
 func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
  viewController.dismissViewControllerAnimated(true, completion: nil)
 }

實(shí)現(xiàn)的效果很好,就是很慢,點(diǎn)擊按鈕調(diào)用 openAppStore 要很久才能顯示出界面,就算加一個(gè)轉(zhuǎn)圈效果也很差。原因是因?yàn)橐?nbsp; linkmaker.itunes.apple.com 根據(jù) identifier 查找鏈接,仔細(xì)看代碼我們會(huì)發(fā)現(xiàn) presentViewController 是在查找到結(jié)果才被調(diào)用,其實(shí)我們可以不用讓界面現(xiàn)出來,雖然時(shí)間是一樣的,但是用戶體驗(yàn)會(huì)很好,修改后代碼如下:

func openAppStore(url: String){
  if let number = url.rangeOfString("[0-9]{9}", options: NSStringCompareOptions.RegularExpressionSearch) {
   let appId = url.substringWithRange(number)
   let productView = SKStoreProductViewController()
   productView.delegate = self
   productView.loadProductWithParameters([SKStoreProductParameterITunesItemIdentifier : appId], completionBlock: { [weak self](result: Bool, error: NSError?) -> Void in
    if !result {
     productView.dismissViewControllerAnimated(true, completion: nil)
     self?.openAppUrl(url)
    }
   })
   self.presentViewController(productView, animated: true, completion: nil)
  } else {
   openAppUrl(url)
  }
 }
 
 private func openAppUrl(url: String) {
  let nativeURL = url.stringByReplacingOccurrencesOfString("https:", withString: "itms-apps:")
  if UIApplication.sharedApplication().canOpenURL(NSURL(string:nativeURL)!) {
   UIApplication.sharedApplication().openURL(NSURL(string:url)!)
  }
 }
 
 func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
  viewController.dismissViewControllerAnimated(true, completion: nil)
 }

代碼說明:

    不等 loadProductWithParameters 返回直接 presentViewController ,解析失敗再嘗試用 openURL 的方式打開。

參考:

    http://stackoverflow.com/questions/17871920/odd-behavior-with-skstoreproductviewcontroller

結(jié)束:        以上就是對(duì)ISO 應(yīng)用內(nèi)打開AppStorn顯示某個(gè)應(yīng)用詳情,有需要的朋友可以參考下。   

相關(guān)文章

最新評(píng)論