web-dev-qa-db-fra.com

SKStore Review Controller, comment l’utiliser correctement?

J'ai vu une réponse, mais je n'en étais pas satisfaite et j'avais une idée, mais je ne savais pas comment l'utiliser correctement, afin qu'elle s'exécute correctement, bien que je pense qu'elle devrait être utilisée dans les délégués d'Application didFinishLaunching, mais je voulais être sûr avant de l'implémenter dans l'application Live sans aucune hâte. SKStore​Review​Controller Ne fonctionne que pour iOS 10.3, ce que je lisais. Quelqu'un pourrait-il expliquer avec un peu de code dans Swift et Objective C.

PDATE:

En fait, je ne sais plus comment appeler la méthode request​Review(), Où dois-je appeler cette méthode? dans rootViewControllerviewDidLoad ou dans appDelegatedidFinishlaunching?

Merci.

36
Abhishek Mitra

SKStoreReviewController est disponible dans iOS 10.3 et versions ultérieures.

Selon les documents d'Apple:

Vous pouvez demander aux utilisateurs d'évaluer ou de réviser votre application lorsqu'ils l'utilisent, sans les envoyer à l'App Store. Vous déterminez les points de l'expérience utilisateur où il est judicieux d'appeler l'API et le système se charge du reste. .

Afin d’afficher Rate/Review dans l’application, vous devez ajouter StoreKitframework.

Veuillez trouver l'exemple de code pour les deux langues:

Objectif c:

#import <StoreKit/StoreKit.h>

- (void)DisplayReviewController {
    if([SKStoreReviewController class]){
       [SKStoreReviewController requestReview] ;
    }
}

depuis xCode 9, vous pouvez faire:

#import <StoreKit/StoreKit.h>

- (void)DisplayReviewController {
    if (@available(iOS 10.3, *)) {
        [SKStoreReviewController requestReview];
    }
}

Rapide:

import StoreKit

func DisplayReviewController {
    if #available( iOS 10.3,*){
        SKStoreReviewController.requestReview()
    }
}

Mise à jour: demandez une note uniquement après que l'utilisateur a démontré son engagement avec votre application

70
korat prashant

Pour l’objectif C,

1-) Ajout du framework StoreKit à partir de Link Binary With Library enter image description here

2-) Cadre ajouté

#import <StoreKit/StoreKit.h>

3-) Ajout du code ci-dessous où vous souhaitez appeler la fenêtre contextuelle App-Review. Dans ce cas, j'ai ajouté dans viewDidLoad.

  - (void)viewDidLoad {
        [super viewDidLoad];
        [SKStoreReviewController requestReview];
    }

4-) Vous devez savoir que vous expliquez ci-dessous à partir de Apple lorsque vous testez en mode débogage

Lorsque vous appelez cette méthode alors que votre application est encore en mode de développement, une vue de demande d'évaluation/révision est toujours affichée pour vous permettre de tester l'interface utilisateur et l'expérience utilisateur. Cependant, cette méthode n'a aucun effet lorsque vous l'appelez dans une application que vous distribuez à l'aide de TestFlight.

8
Emre Gürses

Je pense qu'appeler directement le ci-dessous n'est pas une bonne idée

SKStoreReviewController.requestReview ()

Cela peut être fait comme chaque fois que l'utilisateur ouvre votre application le multiple de 10 (10,20,30, ... 100) puis vous pouvez le montrer pour examen

donc tout d’abord, vous devez créer un fichier qui sera responsable de tout, comme enregistrer le nombre ouvert d’applications dans userdefaults, récupérer le nombre ouvert d’applications et afficher requestReview (), veuillez jeter un coup d’œil à l’extrait de code suivant.

   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.
    }
}

}

5
Shakti

Ajoutant à l'excellente réponse de korat ci-dessus ...

Si vous prenez en charge une application Objective-C héritée et que vous souhaitez appeler DisplayReviewController après l'ouverture de quelques applications, procédez comme suit:

Dans votre classe AppDelegate.m, ajoutez ceci:

- (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"];
}

et dans le contrôleur, vous voulez appeler la fonction:

- (void)applicationDidBecomeActive {

  if ([[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchCount"] == 5) {
     [self DisplayReviewController];
  }
}
3
Jordan

Je pense que vous pouvez implémenter une méthode pour compter quand ils exécutent l’application et la stocker dans UserDefaults, puis appeler requestReview () si le nombre est 5 ou 10 ou quelque chose comme ça (cela dépend de vous), de cette façon vous avez plus chance d'avoir une bonne critique.

1