iOS SDK - 詳細オプション

詳細オプション

Singular iOS SDK のオプションの詳細設定です。標準的な統合には必要ありません。



JavaScript インターフェース

概要

JavaScript インターフェースを使用して、WKWebView ベースのハイブリッドアプリの JavaScript コードから Singular SDK 機能を有効にします。

サポートされているメソッド:

  • setCustomUserId: カスタムユーザー識別子を設定
  • unsetCustomUserId: カスタムユーザー識別子を削除
  • event: 属性の有無にかかわらずイベントを追跡
  • revenue: 収益を追跡

WKWebView 統合のセットアップ

ビューコントローラーの WKNavigationDelegate で JavaScript インターフェースを構成して、JavaScript から Singular SDK メソッドを使用できるようにします。

注: iOS 8.0 以降、Apple はアプリに Web コンテンツを追加するために WKWebView の使用を推奨しています。 UIWebView WebView は使用しないでください。詳細については、 Apple の WKWebView ドキュメント を参照してください。

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)
    }
}

セットアップ要件:

  • アプリバンドルに Singular.js ファイルを含めます
  • ビューコントローラーを WKWebView のナビゲーションデリゲートとして設定します
  • decidePolicyForNavigationAction デリゲートメソッドを実装します
  • Singular SDK リクエストを処理するために processJSRequestWK を呼び出します

JavaScript の使用方法

WKWebView で実行されている JavaScript コードから Singular メソッドを呼び出します。

イベントの追跡

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
    })
);

収益の追跡

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

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

カスタムユーザー ID の管理

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

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

JavaScript API に関する注意事項:

  • すべてのメソッドはグローバルな Singular オブジェクトで呼び出されます
  • イベント属性は JSON 文字列化されたオブジェクトとして渡す必要があります
  • メソッド名は camelCase を使用します (例: setCustomUserId )
  • インターフェースは JavaScript の呼び出しをネイティブの SDK メソッドに自動的にブリッジします

BETA 機能

一般提供ではありません: このセクションの機能は BETA です。Singular がお客様のアカウントで有効化しないと動作せず、動作が変更される可能性があります。実装に着手する前にカスタマーサクセスマネージャーにご相談ください。

アトリビューションコールバック

アトリビューションコールバックは、インストールをもたらしたネットワークやキャンペーンなど、Singular のアトリビューション結果を、インストール後の最初のセッション中にデバイス上のアプリへ渡します。

有効化が必要です: この機能はデフォルトでは無効です。アカウントで有効化されていない場合、コードが正しくてもコールバックは一度も呼び出されません。有効化をご希望の場合はカスタマーサクセスマネージャーにお問い合わせください。

セットアップ方法

  1. カスタマーサクセスマネージャーに、アカウントでアトリビューションコールバックを有効化するよう依頼します。
  2. SDK を初期化する前に、SDK の設定オブジェクトにハンドラーを登録します。シグネチャとコードサンプルについては、 deviceAttributionCallbackを参照してください。
  3. これまでアプリを開いたことのないデバイスでテストします。コールバックは最初のセッションでのみ呼び出されます。

想定される動作

  • 最初のセッションのみ: コールバックはインストール後の最初のセッション中に一度だけ呼び出され、それ以降のアプリ起動では呼び出されません。
  • Organic は失敗ではなく結果です: タッチポイントが見つからない場合でもコールバックは呼び出され、ネットワークは「Organic」として報告されます。コールバックがまったく呼び出されない場合、原因はアトリビューションではなくセットアップの問題です。
  • 最終的なアトリビューションではなく推定値です: 結果は、セッションが処理された時点で利用可能だった最後のタッチポイントを反映します。より多くの情報をもとに後から確定される Singular のレポート上のアトリビューションと常に一致するとは限りません。