iOS SDK - 高级选项

文件

高级选项

手动管理会话

默认情况下,如果应用程序在后台运行 60 秒或更长时间后才返回前台,SDK 将注册一个新会话。要更改超时值,请使用setSessionTimeout方法并将其添加到 Config 中

setSessionTimeout 方法
说明 更改会话超时值。
签名 (void)setSessionTimeout:(int)timeout
使用示例
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
}

使用 JavaScript 接口

Singular 提供了 JavaScript 接口,你可以用它在应用程序中调用 Singular。

例如,如果设置了 JavaScript 接口,就可以通过 JavaScript 代码向 Singular 发送事件,如下所示:

JavaScript
Singular.event('event');
Singular.event('test', JSON.stringify({"a1":"bar", "a2":"boo", "a3":"baz"}));

JavaScript 支持的方法

该接口支持以下 SDK 方法:

  • 设置客户用户 ID
  • unsetCustomUserID
  • 事件
  • 收入

启用 JavaScript 界面

注:从 iOS 8.0+ 开始,Apple 建议使用WKWebView为应用程序添加网页内容。请勿使用UIWebViewWebView。有关详细信息,请参阅Apple 的 WKWebView 文档

要在使用 WKWebView 时启用 JavaScript 界面,您需要在WKNavigationDelegate协议的webView 方法中添加一些代码(该协议可帮助您实现在 Web 视图处理导航请求时触发的自定义行为)。

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   


    }
}