高级选项
手动管理会话
默认情况下,如果应用程序在后台运行 60 秒或更长时间后才返回前台,SDK 将注册一个新会话。要更改超时值,请使用setSessionTimeout方法并将其添加到 Config 中。
setSessionTimeout 方法 | |
---|---|
说明 | 更改会话超时值。 |
签名 | (void)setSessionTimeout:(int)timeout |
使用示例 |
|
使用 JavaScript 接口
Singular 提供了 JavaScript 接口,你可以用它在应用程序中调用 Singular。
例如,如果设置了 JavaScript 接口,就可以通过 JavaScript 代码向 Singular 发送事件,如下所示:
Singular.event('event');
Singular.event('test', JSON.stringify({"a1":"bar", "a2":"boo", "a3":"baz"}));
JavaScript 支持的方法
该接口支持以下 SDK 方法:
- 设置客户用户 ID
- unsetCustomUserID
- 事件
- 收入
启用 JavaScript 界面
注:从 iOS 8.0+ 开始,Apple 建议使用WKWebView为应用程序添加网页内容。请勿使用UIWebView或WebView。有关详细信息,请参阅Apple 的 WKWebView 文档。
要在使用 WKWebView 时启用 JavaScript 界面,您需要在WKNavigationDelegate协议的webView 方法中添加一些代码(该协议可帮助您实现在 Web 视图处理导航请求时触发的自定义行为)。
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
}
}