Tạo một helper giúp user dễ dàng review ứng dụng của bạn trên AppStore
Bạn là một iOS developer và tạo ra những ứng dụng tuyệt vời được đưa lên AppStore, vậy cách để ứng dụng của bạn được biết đến nhiều hơn và nằm trong top 200 các ứng dụng mới được tải nhiều nhất? Hãy tạo một chức năng gợi ý cho người dùng đánh giá ứng dụng của bạn. Sau đây là cách làm: Khi người ...
Bạn là một iOS developer và tạo ra những ứng dụng tuyệt vời được đưa lên AppStore, vậy cách để ứng dụng của bạn được biết đến nhiều hơn và nằm trong top 200 các ứng dụng mới được tải nhiều nhất? Hãy tạo một chức năng gợi ý cho người dùng đánh giá ứng dụng của bạn. Sau đây là cách làm:
- Khi người dùng click vào 1 component nào đó trong ứng dụng hãy cho hiển thị màn hình gợi ý đánh giá ứng dụng.
- Để không gây khó chịu cho người dùng thì việc hiển thị đó phải theo 1 schedule nhất định.
Từ iOS 10.3 trở lên, Apple cung cấp 1 class SKStoreReviewController thuộc StoreKit giúp việc hiển thị UI gợi ý.
Trước đó chúng ta sẽ open đến ứng dụng thông qua Safari browser trong device.
--> Code:
import UIKit import StoreKit struct StoreReviewHelper { static func incrementAppOpenedCount() { // called from appdelegate didfinishLaunchingWithOptions: guard var appOpenCount = UserDefaults.standard.value(forKey: UserDefaultsKeys.APP_OPENED_COUNT) as? Int else { UserDefaults.standard.set(1, forKey: UserDefaultsKeys.APP_OPENED_COUNT) return } appOpenCount += 1 UserDefaults.standard.set(appOpenCount, forKey: UserDefaultsKeys.APP_OPENED_COUNT) } static func checkAndAskForReview() { // call this whenever appropriate // this will not be shown everytime. Apple has some internal logic on how to show this. guard let appOpenCount = UserDefaults.standard.value(forKey: UserDefaultsKeys.APP_OPENED_COUNT) as? Int else { UserDefaults.standard.set(1, forKey: UserDefaultsKeys.APP_OPENED_COUNT) return } switch appOpenCount { case 10,50: StoreReviewHelper().requestReview() case _ where appOpenCount%100 == 0 : StoreReviewHelper().requestReview() default: // print("App run count is : (appOpenCount)") break; } } func requestReview() { if #available(iOS 10.3, *) { SKStoreReviewController.requestReview() } else { // Fallback on earlier versions // Try any other 3rd party or manual method here. rateApp(appId: "**yourAppID**") } } fileprivate func rateApp(appId: String) { openUrl("itms-apps://itunes.apple.com/app/" + appId) } fileprivate func openUrl(_ urlString:String) { let url = URL(string: urlString)! if #available(iOS 10.0, *) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } else { UIApplication.shared.openURL(url) } } }
--> Sử dụng:
- Ở AppDelegate:
// incrementAppOpenedCount StoreReviewHelper.incrementAppOpenedCount()
- Ở viewDidLoad của rootViewController trong ứng dụng:
// checkAndAskForReview StoreReviewHelper.checkAndAskForReview()
- Khi người dùng tap vào 1 component:
let storeReviewHelper = StoreReviewHelper() storeReviewHelper.requestReview()
Đoạn code trên sẽ chạy khi bạn thay "yourAppID" bằng appID ứng dụng của bạn được lấy trên ituneconnects.Thêm 1 điểm nữa là APP_OPENED_COUNT, biến này sẽ lưu vào NSUserDefault(đọc code bạn sẽ hiểu :p)