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メソッドをサポートしています:

  • setCustomUserID
  • unsetCustomUserID
  • イベント
  • 収益

JavaScriptインターフェースを有効にする

注意:iOS 8.0+から、Appleはアプリにウェブコンテンツを追加するためにWKWebViewを使用することを推奨しています。UIWebViewや WebViewは使用しないでください。詳しくは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   


    }
}