SDK de iOS - Opciones avanzadas

Documento

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
SwiftObjective-C
func getConfig() -> SingularConfig? {       
  // Singular Config Options     


  guard let config = SingularConfig(apiKey: Constants.APIKEY, andSecret:
    Constants.SECRET) else {         
      return nil     
      }     
  //...
  Singular.setSessionTimeout(120)      
  //...
  return config
}

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:

JavaScript
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).

Swift
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   


    }
}