SKStore Review Controller, как правильно использовать его?
Я видел какой-то ответ, но не был доволен ими и получил некоторую идею, но не знаю, как правильно его использовать, чтобы он выполнялся надлежащим образом, хотя я думаю, что он должен использоваться в делегатах приложений didFinishLaunching
, но я хотел быть уверенным, прежде чем реализовать его в Live приложении без каких-либо суматохи. SKStoreReviewController
работает только для ios 10.3, что я читал, может кто-нибудь объяснить с небольшим количеством кода в быстром и объективном c.
UPDATE:
На самом деле я запутался в вызове метода requestReview()
, где мне нужно вызвать этот метод? в rootViewController
viewDidLoad
или в appDelegate
didFinishLaunching
?
Спасибо.
Ответы
Ответ 1
SKStoreReviewController
доступен в iOS 10.3 и более поздних версиях.
Согласно документам APPLE:
Вы можете попросить пользователей оценить или просмотреть ваше приложение во время его использования, не отправляя их в App Store. Вы определяете точки в пользовательском интерфейсе, при котором имеет смысл называть API, и система заботится об остальном,
Inorder для отображения Rate/Review внутри приложения вам нужно добавить StoreKit
.
Пожалуйста, найдите пример кода для обоих языков:
Цель C:
#import <StoreKit/StoreKit.h>
- (void)DisplayReviewController {
if([SKStoreReviewController class]){
[SKStoreReviewController requestReview] ;
}
}
поскольку xCode 9 вы можете сделать:
#import <StoreKit/StoreKit.h>
- (void)DisplayReviewController {
if (@available(iOS 10.3, *)) {
[SKStoreReviewController requestReview];
}
}
Swift:
import StoreKit
func DisplayReviewController {
if #available( iOS 10.3,*){
SKStoreReviewController.requestReview()
}
}
Обновление: попросите оценку только после того, как пользователь продемонстрировал взаимодействие с вашим приложением
Ответ 2
Для цели C,
1-) Добавлена структура StoreKit из Link Binary With Library
![введите описание изображения здесь]()
2-) Добавлена структура
#import <StoreKit/StoreKit.h>
3-) Добавлен код ниже, где вы хотите вызвать всплывающее окно App-Review. В этом случае я добавил в viewDidLoad.
- (void)viewDidLoad {
[super viewDidLoad];
[SKStoreReviewController requestReview];
}
4-) Вы должны знать ниже об этом от Apple, когда вы тестируете в режиме отладки
Когда вы вызываете этот метод, пока ваше приложение все еще находится в режиме разработки, всегда отображается представление с оценкой/просмотром запроса, чтобы вы могли протестировать интерфейс пользователя и испытать его. Однако этот метод не действует, когда вы вызываете его в приложении, которое вы распространяете с помощью TestFlight.
Ответ 3
Я думаю, что прямое вызов ниже - это не очень хорошая идея
SKStoreReviewController.requestReview()
Это можно сделать, как если бы пользователь открыл ваше приложение несколько из 10 (10,20,30,... 100), то вы можете показать их для просмотра
так что в первую очередь вам нужно создать файл, который будет отвечать за все, как сохранение открывания вашего приложения в userdefaults, извлечение счетчика приложений и отображение requestReview() любезно рассмотрите следующий фрагмент кода
import Foundation
import StoreKit
class SpsRateManager {
private static let instance = SpsRateManager()
var shareinstance: SpsRateManager{
return .instance
}
static func incrementAppOpenedCount() { // called from appdelegate didfinishLaunchingWithOptions:
let userdefault = UserDefaults.standard
let savedvalue = userdefault.integer(forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
if savedvalue == 0 {
print("Not saved ")
userdefault.set(1, forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
}
else{
userdefault.set(savedvalue+1, forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
}
}
static func checkAppopencountandProvideReview(){
let userdefault = UserDefaults.standard
let appopencountvalue = userdefault.integer(forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
if appopencountvalue % 10 == 0 {
print("its been 10 times so ask for review ")
SpsRateManager().requestReview()
}
else{
print("not enough open count dont show ")
}
}
fileprivate func requestReview() {
if #available(iOS 10.3, *) {
SKStoreReviewController.requestReview()
} else {
// Fallback on earlier versions
// Try any other 3rd party or manual method here.
}
}
}
Ответ 4
Я думаю, что вы можете реализовать метод для подсчета при запуске приложения и сохранить его в UserDefaults, а затем вызвать requestReview(), если число счетчиков равно 5 или 10 или что-то вроде этого (это зависит от вас), таким образом у вас больше шансов получить хороший обзор.
Ответ 5
Добавляя к korat отличный ответ выше...
Если вы поддерживаете устаревшее приложение Objective-C и хотите вызвать DisplayReviewController после открытия нескольких приложений, выполните следующие действия:
В своем классе AppDelegate.m добавьте это:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
int count = [[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchCount"];
if(count < 0) count = 0;
[[NSUserDefaults standardUserDefaults] setInteger:count+1 forKey:@"LaunchCount"];
}
//The application was in background and become active
- (void)applicationWillEnterForeground:(UIApplication *)application {
int count = [[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchCount"];
if(count < 0) count = 0;
[[NSUserDefaults standardUserDefaults] setInteger:count+1 forKey:@"LaunchCount"];
}
и в контроллере вы хотите вызвать функцию:
- (void)applicationDidBecomeActive {
if ([[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchCount"] == 5) {
[self DisplayReviewController];
}
}