SKStoreReviewController, comment l'utiliser correctement?

j'ai vu une réponse mais pas satisfaite d'eux et j'ai eu une idée, mais je ne sais pas comment l'utiliser correctement, de sorte qu'il s'exécutera de manière appropriée, bien que je pense qu'il devrait être utilisé dans les délégués de L'application didFinishLaunching, mais je voulais être sûr avant de l'implémenter dans Live app sans aucune agitation. SKStore​Review​Controller est seulement de travailler pour ios 10.3 ce que j'ai lu, quelqu'un pourrait-il expliquer avec un peu de code rapide et objective c.

mise à jour:

en fait je suis confus au sujet de l'appel de la méthode request​Review() Où dois-je appeler cette méthode? rootViewControllerviewDidLoad ou appDelegate<!--6 ?

Merci.

29
demandé sur Abhishek Mitra 2017-04-03 08:42:48

5 réponses

SKStoreReviewController est disponible à partir de iOS 10.3.

selon les Documents D'APPLE:

vous pouvez demander aux utilisateurs de noter ou d'examiner votre application pendant qu'ils l'utilisent, sans les envoyer à L'App Store.Vous déterminez les points dans le expérience utilisateur à laquelle il est logique d'appeler L'API et le système prend en charge le reste.

Afinde à la fréquence d'affichage/d'Examen de l'intérieur de l'application, vous devez ajouter StoreKitcadre.

s'il vous Plaît trouver un Exemple de code pour les deux langue:

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

Swift:

import StoreKit

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

mise à Jour: Demander un cote seulement après que l'utilisateur a démontré l'engagement avec votre application

64
répondu korat prashant 2018-05-21 12:16:31

1 -) Ajouté StoreKit framework de Lien Binaire Avec La Bibliothèque enter image description here

2 -) cadre ajouté

#import <StoreKit/StoreKit.h>

3 -) Ajouté le code ci-dessous où vous voulez appeler App-Review pop-up. Dans ce cas, j'ai ajouté dans viewDidLoad.

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

4 -) vous devriez être conscient de ci-dessous expliquer à partir D'Apple, lorsque vous testez en mode de débogage

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

8
répondu Emre Gürses 2017-12-11 12:57:04

je pense que la possibilité d'appeler directement les ci-dessous n'est pas une bonne idée

SKStoreReviewController.requestReview ()

Il peut être fait comme chaque fois que l'utilisateur ouvre votre application le multiple de 10 (10,20,30,...100), alors vous pouvez afficher pour la révision

donc tout d'abord vous avez besoin de créer un fichier qui sera responsable de tout comme sauvegarder votre compte d'ouverture d'application dans userdefaults, extraire le compte d'ouverture d'application et montrer requestReview() veuillez consulter 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.
    }
}

}

3
répondu Shakti 2018-04-03 12:30:28

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 de compte est 5 ou 10 ou quelque chose comme ça (cela dépend de vous), de cette façon vous avez plus de chances d'obtenir une bonne critique.

1
répondu Phúc Đặng Hữu 2017-09-06 10:20:49

ajoutant à la grande réponse de korat ci-dessus...

si vous supportez une application legacy Objective-C et que vous voulez appeler DisplayReviewController après l'ouverture de quelques applications, faites ce qui suit:

dans votre classe AppDelegate.m ajouter 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 controller vous voulez appeler la fonction:

- (void)applicationDidBecomeActive {

  if ([[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchCount"] == 5) {
     [self DisplayReviewController];
  }
}
1
répondu Jordan 2018-07-26 16:37:09