苹果的StoreKit库提供了一些方便的API给我们调用,但很多时候我们都没有注意。这里简单的记录一下应用内跳转App Store和应用内评分。
一、 导入系统StoreKit的头文件
import StoreKit
二、 应用内评分
应用内评分主要使用SKStoreReviewController,只需要一个方法,UI也是非常的简洁美观。
1.两个需要注意点:
1.#available(iOS 10.3, *) 也就是iOS 10.3之后支持
2. a.测试的时候只有用到TestFlight测试,“提交”按钮才能点击。 b.Apple 限制开发者在一年最多只能向用户调用三次评分UI。所以就会出现点击了评分按钮但是不弹窗的情况
- 具体使用很简单,就一句代码(是不是很惊喜😝)
SKStoreReviewController.requestReview()
- 跟一般的方式一起使用
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
- 创建和设置 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
}()
}
- 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)
}
}
- 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
记录到此为止!!