SWift5.0-系统StoreKit应用内跳转APP Store和评分

苹果的StoreKit库提供了一些方便的API给我们调用,但很多时候我们都没有注意。这里简单的记录一下应用内跳转App Store和应用内评分。

一、 导入系统StoreKit的头文件

import StoreKit

二、 应用内评分

应用内评分主要使用SKStoreReviewController,只需要一个方法,UI也是非常的简洁美观。

1.两个需要注意点:

1.#available(iOS 10.3, *) 也就是iOS 10.3之后支持
2. a.测试的时候只有用到TestFlight测试,“提交”按钮才能点击。 b.Apple 限制开发者在一年最多只能向用户调用三次评分UI。所以就会出现点击了评分按钮但是不弹窗的情况

  1. 具体使用很简单,就一句代码(是不是很惊喜)
SKStoreReviewController.requestReview()
  1. 跟一般的方式一起使用
func lg_iTunesScoreComment(appId: String) {
        if #available(iOS 10.3 , *) {
            SKStoreReviewController.requestReview()
        } else {
            let openStr = "itms-apps://itunes.apple.com/app/id\(appId)?action=write-review"
            if UIApplication.shared.canOpenURL(URL(string: openStr)) {
                if #available(iOS 10.0, *) {
                    UIApplication.shared.open(URL(string: openStr), options: [], completionHandler: nil)
                } else {
                    UIApplication.shared.canOpenURL(URL(string: openStr))
                }
            } else {
                print("无法打开链接")
            }
        }
    }

三、 应用内跳转App Store

使用应用内跳转主要是 present SKStoreProductViewController

  1. 创建和设置 Parameters
 import UIKit
import StoreKit

class LGStoreProduct: NSObject {
    
    static let share = LGStoreProduct()
    private override init() { super.init()}
    private var parentVc:UIViewController?
    
    func lg_openStore(currentVc: UIViewController, appID: String)  {
        parentVc = currentVc
        currentVc.present(self.storeVc, animated: true, completion: nil)
        storeVc.loadProduct(withParameters: [SKStoreProductParameterITunesItemIdentifier: appID], completionBlock: {
            (result, error) in
            if result && error == nil {
                print("链接加载成功!!!")

            } else {
                print(error as Any)
            }
        })
    }
    
    
    lazy var storeVc: SKStoreProductViewController = {
        let storeVc = SKStoreProductViewController()
        storeVc.delegate = self
        return storeVc
    }()
}

  1. SKStoreProductViewControllerDelegate方法,设置dissmiss回调
extension LGStoreProduct: SKStoreProductViewControllerDelegate {
    // Sent if the user requests that the page be dismissed
    func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
        parentVc?.dismiss(animated: true, completion: nil)
    }
}
  1. Parameters的可选值有这些,有兴趣的朋友自行研究
// iTunes Store item identifier (NSNumber) of the product
@available(iOS 6.0, *)
public let SKStoreProductParameterITunesItemIdentifier: String

// SKU for the In-App Purchase product (NSString) to render at the top of the product page
@available(iOS 11.0, *)
public let SKStoreProductParameterProductIdentifier: String

// iTunes Store affiliate token (NSString)
@available(iOS 8.0, *)
public let SKStoreProductParameterAffiliateToken: String

// iTunes Store affiliate campaign token (NSString)
@available(iOS 8.0, *)
public let SKStoreProductParameterCampaignToken: String

// Analytics provider token (NSString)
@available(iOS 8.3, *)
public let SKStoreProductParameterProviderToken: String

// Advertising partner token (NSString)
@available(iOS 9.3, *)
public let SKStoreProductParameterAdvertisingPartnerToken: String

应用内跳转App Store我们这里使用 SKStoreProductParameterITunesItemIdentifier

记录到此为止!!

你可能感兴趣的:(SWift5.0-系统StoreKit应用内跳转APP Store和评分)