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. SKStoreReviewController
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 requestReview()
, Où dois-je appeler cette méthode? dans rootViewController
viewDidLoad
ou dans appDelegate
didFinishlaunching
?
Merci.
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 StoreKit
framework.
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
Pour l’objectif C,
1-) Ajout du framework StoreKit à partir de Link Binary With Library
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.
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.
}
}
}
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];
}
}
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.