Подтвердить что ты не робот

SKStore Review Controller, как правильно использовать его?

Я видел какой-то ответ, но не был доволен ими и получил некоторую идею, но не знаю, как правильно его использовать, чтобы он выполнялся надлежащим образом, хотя я думаю, что он должен использоваться в делегатах приложений didFinishLaunching, но я хотел быть уверенным, прежде чем реализовать его в Live приложении без каких-либо суматохи.   SKStore​Review​Controller работает только для ios 10.3, что я читал, может кто-нибудь объяснить с небольшим количеством кода в быстром и объективном c.

UPDATE:

На самом деле я запутался в вызове метода request​Review(), где мне нужно вызвать этот метод? в rootViewController viewDidLoad или в appDelegate didFinishLaunching?

Спасибо.

4b9b3361

Ответ 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];
  }
}