天天看點

iOS App應用内評價

譯自官方API文檔

前言

從iOS 10.3開始,使用者可以在APP内直接進行評分或評論,不需要再跳轉到AppStore了。之前的流程是:使用者點選評論按鈕打開評論頁面(或某個時刻自動彈出)->點選評論->跳轉到AppStore->進行評論。蘋果這一設計簡化了評論流程,使用者體驗更好了一些。

實作

對于我們開發者來說,我們怎麼實作這一功能呢?

蘋果在最新的iOS 10.3的SDK中的StoreKit架構中新增了一個類SKStoreReviewController來專門做這件事情,它隻有一個類方法requestReview。下面直接上代碼。

引入架構 #import <StoreKit/StoreKit.h>

調用requestReview方法

- (void)showReviewAlert {
    [SKStoreReviewController requestReview];
}
           

運作之後的頁面

iOS App應用内評價
iOS App應用内評價

至此就實作在App内直接評論了。

開發階段,這個頁面上的“送出”按鈕是灰色的,不能點選的。在app上線之後,這個按鈕就可以點選了,如下圖:

iOS App應用内評價

選擇星級之後,點選“送出”,評價就送出成功了,并彈出下面視窗。你可以選擇寫評論或點OK關閉視窗。如圖:

iOS App應用内評價

如果是通過點選按鈕彈出的評價頁面,在評價成功之後,再次點選這個按鈕就沒有反應了。

還可以在你的app連結位址後面加上“action=write-review”來直接打開評論頁面,代碼如下:

NSString *str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@?action=write-review", appID];    
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
           

運作之後的效果如下:

iOS App應用内評價

提示:iOS 10.3之後蘋果不建議使用者通過點選按鈕或其它方式來打開評論頁面,我們需要做的就是确定在什麼時候和什麼位置加入彈出評論頁的代碼,剩下的事情就是iOS系統要做的了,評論頁是否彈出是由蘋果決定的,每年不超過3次,跟App的版本無關。

這是蘋果對類方法requestReview的注釋:

/** Request StoreKit to ask the user for an app review. This may or may not show any UI.
 *
 *  Given this may not succussfully present an alert to the user, it is not appropriate for use
 *  from a button or any other user action. For presenting a write review form, a deep link is 
 *  available to the App Store by appending the query params "action=write-review" to a product URL.
 */
           

相容

因為SKStoreReviewController這個類是10.3新增加的,這個方法在10.3之前的系統上運作時沒有任何反應(親測),是以我們的App還需要相容之前的系統,下面是10.3之前跳轉到AppStore評論頁面的代碼:

NSString *str = [NSStringstringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@", appID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
           

也可以使用以下代碼:

NSString *str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@?action=write-review", appID];    
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
           

參考部落格

下面是幾個國外開發者針對10.3在App内直接評論這一技術發表的部落格,大家可以參考一下。

  • SKStoreReviewController - Allow Users to Provide Ratings From Within

    Your iOS App

  • How & when to ask for app reviews and ratings including iOS 10.3
  • Thoughts on Employing SKStoreReviewController Intelligently

希望對大家有所幫助。

繼續閱讀