ios - bar - SKStore Review Controller, ¿Cómo usarlo de forma correcta?
status bar iphone (5)
Añadiendo a la gran respuesta de korat arriba ...
Si admite una aplicación heredada de Objective-C y desea llamar a DisplayReviewController después de que se abra una aplicación, haga lo siguiente:
En su clase AppDelegate.m agregue esto:
- (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"];
}
y en el controlador quieres llamar a la función:
- (void)applicationDidBecomeActive {
if ([[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchCount"] == 5) {
[self DisplayReviewController];
}
}
He visto algunas respuestas pero no estoy satisfecho con ellas y tengo una idea, pero no sé cómo usarlas correctamente, por lo que se ejecutará de manera adecuada, aunque creo que debería usarse en la aplicación. Los delegados didFinishLaunching
, pero quería para estar seguro antes de implementarlo en la aplicación Live sin ningún ajetreo. SKStoreReviewController
solo funciona para ios 10.3 lo que leo, ¿alguien podría explicarlo con un poco de código de forma rápida y objetiva c.
ACTUALIZAR:
En realidad estoy confundido acerca de llamar al método requestReview()
, ¿dónde necesito llamar a este método? en rootViewController
''s viewDidLoad
o en appDelegate
'' didFinishlaunching
?
Gracias.
Creo que llamar directamente a la siguiente no es una buena idea
SKStoreReviewController.requestReview ()
Se puede hacer como cuando el usuario abre su aplicación el múltiplo de 10 (10,20,30, ... 100) y luego puede mostrarlo para revisión.
por lo tanto, primero debe crear un archivo que se encargue de todo, como guardar el recuento abierto de la aplicación en los valores predeterminados del usuario, recuperar el recuento abierto de la aplicación y mostrar requestReview () echando un vistazo al siguiente fragmento de código
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.
}
}
}
Creo que puedes implementar un método para contar cuando ejecutan la aplicación y la almacenan en UserDefaults, luego llama a requestReview () si el número de cuenta es 5 o 10 o algo así (depende de ti), de esta manera tienes más posibilidad de obtener una buena revisión.
Para el Objetivo C,
1-) Marco de trabajo de StoreKit de Link Binary With Library
2-) Marco agregado
#import <StoreKit/StoreKit.h>
3-) Agregado debajo del código donde desea llamar a la ventana emergente de App-Review. En este caso, he añadido en viewDidLoad.
- (void)viewDidLoad {
[super viewDidLoad];
[SKStoreReviewController requestReview];
}
4-) Debe tener en cuenta las siguientes explicaciones de Apple: Cuando realiza pruebas en el modo de depuración
Cuando llama a este método mientras su aplicación aún está en modo de desarrollo, siempre se muestra una vista de solicitud de calificación / revisión para que pueda probar la experiencia y la interfaz del usuario. Sin embargo, este método no tiene ningún efecto cuando lo llama en una aplicación que distribuye utilizando TestFlight.
SKStoreReviewController
está disponible en iOS 10.3 y versiones posteriores.
Según los documentos de APPLE:
Puede pedir a los usuarios que califiquen o revisen su aplicación mientras la usan, sin enviarla a la App Store. Usted determina los puntos en la experiencia del usuario en los que tiene sentido llamar a la API y el sistema se encarga del resto. .
Para poder mostrar Calificación / Revisión dentro de la aplicación, debe agregar el marco de trabajo de StoreKit
.
Por favor encuentre el código de muestra para ambos idiomas:
C objetivo:
#import <StoreKit/StoreKit.h>
- (void)DisplayReviewController {
if([SKStoreReviewController class]){
[SKStoreReviewController requestReview] ;
}
}
Desde xCode 9 puedes hacer:
#import <StoreKit/StoreKit.h>
- (void)DisplayReviewController {
if (@available(iOS 10.3, *)) {
[SKStoreReviewController requestReview];
}
}
Rápido:
import StoreKit
func DisplayReviewController {
if #available( iOS 10.3,*){
SKStoreReviewController.requestReview()
}
}
Actualización: solicite una calificación solo después de que el usuario haya demostrado compromiso con su aplicación