J'ai entendu parler de cette nouvelle fonctionnalité disponible dans iOS 10.3 et je pensais qu'elle serait plus flexible et prête à l'emploi. Mais après avoir lu les docs , j'ai découvert qu'il fallait décider du moment pour le montrer et du viewController qui l'appelle. Est-il possible de le déclencher après une période aléatoire dans n'importe quel viewController affiché à ce moment?
Dans votre AppDelegate:
Rapide:
import StoreKit
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let shortestTime: UInt32 = 50
let longestTime: UInt32 = 500
guard let timeInterval = TimeInterval(exactly: arc4random_uniform(longestTime - shortestTime) + shortestTime) else { return true }
Timer.scheduledTimer(timeInterval: timeInterval, target: self, selector: #selector(AppDelegate.requestReview), userInfo: nil, repeats: false)
}
@objc func requestReview() {
SKStoreReviewController.requestReview()
}
Objectif c:
#import <StoreKit/StoreKit.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
int shortestTime = 50;
int longestTime = 500;
int timeInterval = arc4random_uniform(longestTime - shortestTime) + shortestTime;
[NSTimer scheduledTimerWithTimeInterval:timeInterval target:self selector:@selector(requestReview) userInfo:nil repeats:NO];
}
- (void)requestReview {
[SKStoreReviewController requestReview];
}
Le code ci-dessus demandera à Apple d’inviter l’utilisateur à évaluer l’application à un moment quelconque entre 50 et 500 secondes après le lancement de l’application . lorsque le requestReview est appelé.
Pour objectif - C:
Ajouter StoreKit.framework
Puis dans votre viewController.h
#import <StoreKit/StoreKit.h>
Puis dans votre appel de fonction:
[SKStoreReviewController requestReview];
Pour Swift
Ajouter StoreKit.framework
Dans votre ViewController.Swift
import StoreKit
Puis dans votre appel de fonction:
SKStoreReviewController.requestReview()
C'est tout ! Apple se chargera de l'affichage de la note (au hasard)… .. Une fois en développement, il sera appelé à chaque fois que vous l'appelez.
Édité: pas besoin de vérifier la version du système d'exploitation, StoreKit ne s'affiche pas si le système d'exploitation est inférieur à 10.3, merci Zakaria.
Sauter au hasard n’est pas un bon moyen de suivre cette routine et non seulement contrevient au conseil d’Apple, mais vous donnera des résultats décevants.
Ennuyer un utilisateur avec une fenêtre contextuelle à un moment donné n'aura jamais autant de succès que de l'inviter à un moment approprié, comme lorsqu'il vient de terminer un niveau ou de créer un document, et qu'il a ce sentiment de succès, très confus.
En suivant les conseils de Peter Johnson, j'ai créé un cours simple, dans lequel vous pouvez simplement insérer la méthode à l'endroit souhaité dans votre code et qui apparaîtra à un endroit où l'utilisateur vient de connaître le succès.
struct DefaultKeys {
static let uses = "uses"
}
class ReviewUtility {
// Default Keys stored in Structs.Swift
static let sharedInstance = ReviewUtility()
private init() {}
func recordLaunch() {
let defaults = UserDefaults.standard
// if there's no value set when the app launches, create one
guard defaults.value(forKey: DefaultKeys.uses) != nil else { defaults.set(1, forKey: DefaultKeys.uses); return }
// read the value
var totalLaunches: Int = defaults.value(forKey: DefaultKeys.uses) as! Int
// increment it
totalLaunches += 1
// write the new value
UserDefaults.standard.set(totalLaunches, forKey: DefaultKeys.uses)
// pick whatever interval you want
if totalLaunches % 20 == 0 {
// not sure if necessary, but being neurotic
if #available(iOS 10.3, *) {
// do storekit review here
SKStoreReviewController.requestReview()
}
}
}
}
Pour l’utiliser, placez-le à l’endroit où vous souhaitez l’appeler et espérons que vous ne cochez pas les utilisateurs au hasard.
ReviewUtility.sharedInstance.recordLaunch()
Montrer le dialogue au hasard n'est probablement pas une bonne idée. Veuillez vous reporter à la directive Apple qui mentionne: N'interrompez pas l'utilisateur, surtout lorsqu'il effectue une tâche urgente ou stressante.
Voici ce que suggère Apple:
Demandez une note uniquement après que l'utilisateur a démontré son engagement avec votre application. Par exemple, Invitez l'utilisateur à la achèvement d'un niveau de jeu ou tâche de productivité. Ne demandez jamais une note lors du premier lancement ou lors de l'intégration. Prévoyez suffisamment de temps pour vous faire une opinion.
Ne pas être un parasite. Des invites de classement répétées peuvent être irritantes et même avoir un impact négatif sur l'opinion de l'utilisateur sur votre application. Autorisez au moins _ une semaine ou deux entre les demandes d'évaluation et ne revenez qu'à l'invite après que l'utilisateur aura démontré un engagement supplémentaire avec votre application.
Ce post est également très intéressant ...
Je ne peux pas encore ajouter de commentaires, mais si vous utilisez Appirater, vous pouvez vérifier la version pour voir si elle est inférieure à 10.3.