2017-03-28 23 views
6

Tôi đã thêm thông tin sau vào AppDelegate và StoreKit đã nhập của mình. Phương thức đánh giá bật lên khi khởi chạy như mong đợi. Câu hỏi của tôi là, tôi là người chịu trách nhiệm về tần suất mà điều này được gọi hay là Apple? Các docs vẫn còn khá nhẹ nhưng tôi đọc elsewhere rằng Apple sẽ giới hạn 3 lần một năm cho mỗi người dùng, tôi có thể tin tưởng họ thêm khoảng thời gian thích hợp ở giữa thời điểm hiển thị (lý tưởng là một vài tháng) không?Kiểm soát SKStoreReviewController Tần số hiển thị

Khi phát triển, nó sẽ xuất hiện mỗi khi tôi khởi chạy ứng dụng, tôi sẽ ghét người dùng phải bỏ qua 3 lần trong lúc khởi chạy nhiều lần sau đó không được hỏi lại trong 12 tháng.

Bây giờ 10.3 ra, tôi quan tâm đến cách người khác giải quyết vấn đề này.

Chúc mừng.

if #available(iOS 10.3, *) { 
     print("Show Review Controller") 
     SKStoreReviewController.requestReview() 
    } else { 
     print("Cannot Show Review Controller") 
     // Fallback on earlier versions 
    } 
+0

Tôi đã học được một cách khó khăn rằng Apple đã không gian ra 3 lần một năm đồng đều trong năm. Triển khai của tôi là sau lần thứ 3 của một hành động nhất định trong ứng dụng, hãy gọi requestReview(), mọi lúc. Doh. Hóa ra yêu cầu xem xét bật lên MỌI thời gian sau ba hành động. Ba lần. Sau đó, không còn nữa, trong một năm, được cho là. Như đã nêu trong các câu trả lời ở đây, lưu trữ ngày cố gắng yêu cầu cuối cùng trong các giá trị mặc định của người dùng vv phải là cách xử lý tốt nhất. – Jonny

Trả lời

8

Tôi đã thêm số được lưu trữ trong UserDefaults. Nó tăng lên mỗi lần một hành động nhất định xảy ra, và khi count % 10 == 0 tôi gọi SKStoreReviewController.requestReview() (người dùng trung bình có khả năng sẽ tăng số lượng một lần cho mỗi lần sử dụng ứng dụng)

Điều này có thể hoặc không thể hiển thị yêu cầu đánh giá, nhưng nó không đảm bảo hiển thị quá thường xuyên.

Hoặc, hãy cân nhắc việc lưu trữ lastReivewAttemptDate và khoảng thời gian tối thiểu giữa các yêu cầu.

+0

Tôi đã có một giá trị được lưu trữ trong giá trị mặc định của người dùng với giá trị ban đầu là 5. Bất cứ khi nào người dùng thêm thành công một đối tượng cụ thể, tôi xóa 1 khỏi số người dùng mặc định đó, khi nó đạt đến 0, tôi gọi SKStoreReviewController.requestReview() và đặt lại giá trị thành 5. –

+0

@FaizFareed Vui lòng đặt câu hỏi này dưới dạng một câu hỏi khác. –

+1

@AshleyMills, Cảm ơn bạn đã hướng dẫn, nhưng tôi nghĩ tôi sẽ tự làm. vì vậy không cần phải tạo ra một câu hỏi khác. & xin lỗi vì bình luận ở trên của tôi. để loại bỏ điều đó. –

2

Bạn không chịu trách nhiệm về việc đếm này - nhưng làm như vậy cho phép bạn chiến lược hơn khi bạn có khả năng hết các cuộc gọi.

Lưu dấu thời gian cho mỗi cuộc gọi bên trong NSUserDefault có vẻ là cách linh hoạt nhất để theo dõi. Đây là những gì tôi làm trong obj-c:

// Rate app action for iOS 10.3+ 
-(void)displayDialog { 
    [SKStoreReviewController requestReview]; 
    [self storeTimestamp:PromptTimestampsKey]; 
} 

- (void)storeTimestamp:(NSString *)key { 
    NSNumber *todayTimestamp = [NSNumber numberWithDouble:[[NSDate date] timeIntervalSince1970]]; 

    NSMutableArray *timestamps = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:key]]; 

    // Remove timestamps more than a year old 
    for (NSNumber *timestamp in timestamps) { 
     if ((todayTimestamp.doubleValue - timestamp.doubleValue) > SecondsInYear) { 
      [timestamps removeObject:timestamp]; 
     } 
    } 

    // Store timestamp for this call 
    [timestamps addObject:todayTimestamp]; 
    [[NSUserDefaults standardUserDefaults] setObject:timestamps forKey:key]; 
} 
Các vấn đề liên quan