Opciones avanzadas
Gestión manual de sesiones
Por defecto, si la aplicación se ejecuta en segundo plano durante 60 segundos o más antes de volver al primer plano, el SDK registrará una nueva sesión. Para cambiar este valor de tiempo de espera, utilice el método setSessionTimeout y añádalo al archivo Config.
Método setSessionTimeout | |
---|---|
Descripción | Cambia el valor del tiempo de espera de la sesión. |
Firma | (void)setSessionTimeout:(int)timeout |
Ejemplo de uso |
|
Uso de la interfaz JavaScript
Singular proporciona una interfaz JavaScript que puede utilizar para llamar a Singular en su aplicación.
Por ejemplo, si configura la interfaz JavaScript, puede enviar eventos a Singular desde código JavaScript de la siguiente forma:
Singular.event('event');
Singular.event('test', JSON.stringify({"a1":"bar", "a2":"boo", "a3":"baz"}));
Métodos compatibles en JavaScript
La interfaz admite los siguientes métodos del SDK:
- setCustomUserID
- unsetCustomUserID
- evento
- ingresos
Activación de la interfaz JavaScript
Nota: A partir de iOS 8.0+, Apple recomienda utilizar WKWebView para añadir contenido web a su aplicación. No utilice UIWebView ni WebView. Consulte la documentación de WKWebView de Apple para obtener más información.
Para habilitar la interfaz JavaScript al utilizar WKWebView, debe añadir código al método webView del protocolo WKNavigationDelegate (este protocolo le ayuda a implementar comportamientos personalizados que se activan cuando una vista web gestiona una solicitud de navegación).
extension ViewController: WKNavigationDelegate {
func webView(_: WKWebView, decidePolicyFor: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
// Singular handler
let js = "typeof(Singular)"
webView.evaluateJavaScript(js) { (result, error) -> Void in
if let resultString = result as? String {
if resultString.isEqual("undefined") {
do {
let contents = try String(contentsOfFile:
Bundle.main.path(forResource: "Singular", ofType: "js")!)
self.webView.evaluateJavaScript(contents, completionHandler: nil)
} catch { }
} else {
print(decidePolicyFor.request)
Singular.processJSRequestWK(self.webView, withURL:decidePolicyFor.request)
}
}
}
// rest of your code goes here
}
}