SDK do iOS - Opções avançadas

Opções avançadas

Configuração avançada e opcional do SDK do Singular para iOS. Não é necessária para uma integração padrão.



Interface JavaScript

Visão geral

Habilite a funcionalidade do SDK do Singular a partir de código JavaScript em aplicativos híbridos baseados em WKWebView usando a interface JavaScript.

Métodos compatíveis:

  • setCustomUserId: Define um identificador de usuário personalizado
  • unsetCustomUserId: Remove o identificador de usuário personalizado
  • event: Rastreia eventos com ou sem atributos
  • revenue: Rastreia receita

Configuração da integração com WKWebView

Configure a interface JavaScript no WKNavigationDelegate do seu view controller para habilitar os métodos do SDK do Singular a partir do JavaScript.

Observação: A partir do iOS 8.0+, a Apple recomenda usar WKWebView para adicionar conteúdo web ao seu aplicativo. Não use UIWebView ou WebView . Consulte a documentação do WKWebView da Apple para obter mais informações.

Swift Objective-C
import UIKit
import WebKit

class ViewController: UIViewController {

    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Create WKWebView
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.navigationDelegate = self
        view.addSubview(webView)

        // Load web content
        if let url = Bundle.main.url(forResource: "index", withExtension: "html") {
            webView.loadFileURL(url, allowingReadAccessTo: url)
        }
    }
}

extension ViewController: WKNavigationDelegate {

    func webView(_ webView: WKWebView,
                decidePolicyFor navigationAction: WKNavigationAction,
                decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

        // Check if Singular JavaScript interface exists
        let js = "typeof(Singular)"
        webView.evaluateJavaScript(js) { (result, error) -> Void in
            if let resultString = result as? String {
                if resultString == "undefined" {
                    // Load Singular JavaScript interface
                    do {
                        if let path = Bundle.main.path(forResource: "Singular", ofType: "js") {
                            let contents = try String(contentsOfFile: path)
                            webView.evaluateJavaScript(contents, completionHandler: nil)
                        }
                    } catch {
                        print("Error loading Singular.js: \(error)")
                    }
                } else {
                    // Process Singular SDK request
                    Singular.processJSRequestWK(webView, withURL: navigationAction.request)
                }
            }
        }

        // Allow navigation
        decisionHandler(.allow)
    }
}

Requisitos de configuração:

  • Inclua o arquivo Singular.js no bundle do seu aplicativo
  • Defina seu view controller como o delegado de navegação do WKWebView
  • Implemente o método delegado decidePolicyForNavigationAction
  • Chame processJSRequestWK para processar as solicitações do SDK do Singular

Uso de JavaScript

Chame os métodos do Singular a partir de código JavaScript em execução no seu WKWebView.

Rastrear eventos

JavaScript
// Simple event without attributes
Singular.event('level_completed');

// Event with attributes (pass as JSON string)
Singular.event('purchase_attempt',
    JSON.stringify({
        "item_name": "sword",
        "item_category": "weapons",
        "item_price": 9.99
    })
);

Rastrear receita

JavaScript
// Track revenue in USD
Singular.revenue('USD', 9.99);

// Track revenue in other currencies
Singular.revenue('EUR', 8.50);

Gerenciar ID de usuário personalizado

JavaScript
// Set custom user ID
Singular.setCustomUserId('user_12345');

// Remove custom user ID
Singular.unsetCustomUserId();

Notas da API JavaScript:

  • Todos os métodos são chamados no objeto global Singular
  • Os atributos do evento devem ser passados como objetos serializados em JSON
  • Os nomes dos métodos usam camelCase (por exemplo, setCustomUserId )
  • A interface conecta automaticamente as chamadas do JavaScript aos métodos nativos do SDK

Recursos BETA

Não disponível de forma geral: Os recursos desta seção estão em BETA. O Singular precisa habilitá-los para a sua conta antes que funcionem, e o comportamento deles pode mudar. Fale com o seu Customer Success Manager antes de desenvolver com base neles.

Callback de atribuição

O callback de atribuição entrega ao seu app, no dispositivo, o resultado de atribuição do Singular para a instalação — como a rede e a campanha que a geraram — durante a primeira sessão do usuário após a instalação.

É necessário habilitar: Este recurso vem desativado por padrão. Se ele não tiver sido habilitado para a sua conta, o callback nunca é executado, mesmo que o seu código esteja correto. Fale com o seu Customer Success Manager para solicitá-lo.

Como configurar

  1. Peça ao seu Customer Success Manager para habilitar o callback de atribuição para a sua conta.
  2. Registre o seu handler no objeto de configuração do SDK antes de inicializá-lo. Para ver a assinatura e um exemplo de código, consulte deviceAttributionCallback.
  3. Teste em um dispositivo que nunca tenha aberto o app. O callback é executado apenas em uma primeira sessão.

O que esperar

  • Apenas na primeira sessão: O callback é executado uma vez, durante a primeira sessão após a instalação. Ele não é chamado em aberturas posteriores.
  • Organic é um resultado, não uma falha: Quando nenhum touchpoint é encontrado, o callback ainda assim é executado e informa a rede como "Organic". Se o callback não for executado, a causa é um problema de configuração, e não de atribuição.
  • Uma melhor estimativa, não a atribuição final: O resultado reflete o último touchpoint disponível no momento em que a sessão é processada. Ele nem sempre coincidirá com a atribuição exibida nos relatórios do Singular, que é definida depois com mais informações.