iOS SDK - 고급 옵션

문서

고급 옵션

수동으로 세션 관리하기

기본적으로 앱이 백그라운드에서 60초 이상 실행된 후 포그라운드로 돌아오면 SDK는 새 세션을 등록합니다. 이 시간 제한 값을 변경하려면 설정 세션 시간 제한 메서드를 사용하여 구성에 추가합니다.

설정 세션 타임아웃 메서드
설명 세션 타임아웃 값을 변경합니다.
서명 (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
}

자바Script 인터페이스 사용

Singular는 앱에서 Singular를 호출하는 데 사용할 수 있는 자바Script 인터페이스를 제공합니다.

예를 들어, 자바Script 인터페이스를 설정한 경우 다음과 같이 자바Script 코드에서 Singular로 이벤트를 보낼 수 있습니다:

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

자바Script에서 지원되는 메서드

이 인터페이스는 다음 SDK 메서드를 지원합니다:

  • setCustomUserID
  • unsetCustomUserID
  • event
  • revenue

자바Script 인터페이스 활성화

참고: iOS 8.0 이상부터 Apple은 앱에 웹 콘텐츠를 추가할 때 WKWebView를 사용할 것을 권장합니다. UIWebView 또는 WebView를 사용하지 마십시오. 자세한 내용은 Apple의 WKWebView 설명서를 참조하십시오.

WKWebView를 사용할 때 JavaScript 인터페이스를 활성화하려면 WKNavigationDelegate 프로토콜의 webView 메서드에 코드를 추가해야 합니다(이 프로토콜은 웹 보기가 탐색 요청을 처리할 때 트리거되는 사용자 지정 동작을 구현하는 데 도움이 됩니다).

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   


    }
}