Opções avançadas
Gerir manualmente as sessões
Por predefinição, se a aplicação for executada em segundo plano durante 60 segundos ou mais antes de regressar ao primeiro plano, o SDK registará uma nova sessão. Para alterar esse valor de tempo limite, use o método setSessionTimeout e adicione-o ao Config.
setSessionTimeout Método | |
---|---|
Descrição | Altera o valor de timeout da sessão. |
Assinatura | (void)setSessionTimeout:(int)timeout |
Exemplo de utilização |
|
Usando a interface JavaScript
O Singular fornece uma interface JavaScript que pode ser usada para chamar o Singular em seu aplicativo.
Por exemplo, se você configurar a interface JavaScript, poderá enviar eventos para o Singular a partir do código JavaScript da seguinte forma:
Singular.event('event');
Singular.event('test', JSON.stringify({"a1":"bar", "a2":"boo", "a3":"baz"}));
Métodos suportados em JavaScript
A interface suporta os seguintes métodos do SDK:
- setCustomUserID
- unsetCustomUserID
- evento
- receita
Ativar a interface JavaScript
Nota: A partir do iOS 8.0+, a Apple recomenda a utilização do WKWebView para adicionar conteúdo Web à sua aplicação. Não utilize o UIWebView ou o WebView. Consulte a documentação WKWebView da Apple para obter mais informações.
Para ativar a interface JavaScript ao utilizar o WKWebView, é necessário adicionar algum código ao método webView do protocolo WKNavigationDelegate (este protocolo ajuda-o a implementar comportamentos personalizados desencadeados quando uma vista Web trata de um pedido de navegação).
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
}
}