diff --git a/flutter_inappwebview/lib/src/in_app_webview/in_app_webview_controller.dart b/flutter_inappwebview/lib/src/in_app_webview/in_app_webview_controller.dart index e9385f70b9..8dc757fb25 100644 --- a/flutter_inappwebview/lib/src/in_app_webview/in_app_webview_controller.dart +++ b/flutter_inappwebview/lib/src/in_app_webview/in_app_webview_controller.dart @@ -576,10 +576,6 @@ class InAppWebViewController { ///{@macro flutter_inappwebview_platform_interface.PlatformInAppWebViewController.getViewId} dynamic getViewId() => platform.getViewId(); - ///{@macro flutter_inappwebview_platform_interface.PlatformInAppWebViewController.getNativeWebViewByInstanceId} - static Future getNativeWebViewByInstanceId(String instanceId) => - PlatformInAppWebViewController.static().getNativeWebViewByInstanceId(instanceId); - ///{@macro flutter_inappwebview_platform_interface.PlatformInAppWebViewController.getAllRegisteredInstanceIds} static Future> getAllRegisteredInstanceIds() => PlatformInAppWebViewController.static().getAllRegisteredInstanceIds(); diff --git a/flutter_inappwebview/lib/src/main.dart b/flutter_inappwebview/lib/src/main.dart index 64e28fb3f4..6d6d1164a1 100644 --- a/flutter_inappwebview/lib/src/main.dart +++ b/flutter_inappwebview/lib/src/main.dart @@ -16,3 +16,4 @@ export 'tracing_controller.dart'; export 'process_global_config.dart'; export 'in_app_localhost_server.dart'; export 'webview_environment/main.dart'; +export 'omid/omid_session_controller.dart'; diff --git a/flutter_inappwebview/lib/src/omid/omid_session_controller.dart b/flutter_inappwebview/lib/src/omid/omid_session_controller.dart new file mode 100644 index 0000000000..c49e0c582b --- /dev/null +++ b/flutter_inappwebview/lib/src/omid/omid_session_controller.dart @@ -0,0 +1,39 @@ +import 'package:flutter/services.dart'; + +/// Controller for managing OMID sessions. +class OmidSessionController { + OmidSessionController._(); + + static const _channel = MethodChannel('kontext_omid'); + + /// Starts an OMID session. + static Future startSession({ + required String instanceId, + required String partnerName, + required String partnerVersion, + String? contentUrl, + String? customReferenceData, + }) async { + return _invoke('startOmidSession', { + 'instanceId': instanceId, + 'partnerName': partnerName, + 'partnerVersion': partnerVersion, + 'contentUrl': contentUrl, + 'customReferenceData': customReferenceData, + }); + } + + /// Stops and cleans an OMID session. + static Future stopSession(String instanceId) async { + return _invoke('stopOmidSession', {'instanceId': instanceId}); + } + + static Future _invoke(String method, [Map? args]) async { + try { + final foo = await _channel.invokeMethod(method, args); + print('OMID method $method invoked with result: $foo'); + } on MissingPluginException catch (e) { + throw PlatformException(code: 'missing_plugin', message: e.message); + } + } +} diff --git a/flutter_inappwebview_android/android/build.gradle b/flutter_inappwebview_android/android/build.gradle index ddb812ca23..f3397d5a75 100755 --- a/flutter_inappwebview_android/android/build.gradle +++ b/flutter_inappwebview_android/android/build.gradle @@ -16,11 +16,22 @@ rootProject.allprojects { repositories { google() mavenCentral() + flatDir { + def pluginProject = rootProject.findProject(':flutter_inappwebview_android') + dirs pluginProject != null ? pluginProject.file('libs') : file('libs') + } } } apply plugin: 'com.android.library' +repositories { + flatDir { + dirs 'libs' + } +} + + android { // Conditional for compatibility with AGP <4.2. if (project.android.hasProperty("namespace")) { @@ -48,10 +59,12 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - dependencies { - implementation 'androidx.webkit:webkit:1.12.0' - implementation 'androidx.browser:browser:1.8.0' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' - } } + +dependencies { + implementation 'androidx.webkit:webkit:1.12.0' + implementation 'androidx.browser:browser:1.8.0' + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' + implementation(name: 'omsdk-1.5.6', ext: 'aar') +} \ No newline at end of file diff --git a/flutter_inappwebview_android/android/libs/omsdk-1.5.6.aar b/flutter_inappwebview_android/android/libs/omsdk-1.5.6.aar new file mode 100644 index 0000000000..193a7ddbeb Binary files /dev/null and b/flutter_inappwebview_android/android/libs/omsdk-1.5.6.aar differ diff --git a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/InAppWebViewFlutterPlugin.java b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/InAppWebViewFlutterPlugin.java index 21ce254a94..37f68f5892 100755 --- a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/InAppWebViewFlutterPlugin.java +++ b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/InAppWebViewFlutterPlugin.java @@ -13,6 +13,7 @@ import com.pichillilorenzo.flutter_inappwebview_android.headless_in_app_webview.HeadlessInAppWebViewManager; import com.pichillilorenzo.flutter_inappwebview_android.in_app_browser.InAppBrowserManager; import com.pichillilorenzo.flutter_inappwebview_android.print_job.PrintJobManager; +import com.pichillilorenzo.flutter_inappwebview_android.omid.OmidSessionManager; import com.pichillilorenzo.flutter_inappwebview_android.process_global_config.ProcessGlobalConfigManager; import com.pichillilorenzo.flutter_inappwebview_android.proxy.ProxyManager; import com.pichillilorenzo.flutter_inappwebview_android.service_worker.ServiceWorkerManager; @@ -58,6 +59,8 @@ public class InAppWebViewFlutterPlugin implements FlutterPlugin, ActivityAware { @Nullable public PrintJobManager printJobManager; @Nullable + public OmidSessionManager omidSessionManager; + @Nullable public TracingControllerManager tracingControllerManager; @Nullable public ProcessGlobalConfigManager processGlobalConfigManager; @@ -114,6 +117,7 @@ private void onAttachedToEngine(Context applicationContext, BinaryMessenger mess if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { printJobManager = new PrintJobManager(this); } + omidSessionManager = new OmidSessionManager(this); tracingControllerManager = new TracingControllerManager(this); processGlobalConfigManager = new ProcessGlobalConfigManager(this); } @@ -172,6 +176,10 @@ public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { printJobManager.dispose(); printJobManager = null; } + if (omidSessionManager != null) { + omidSessionManager.dispose(); + omidSessionManager = null; + } if (tracingControllerManager != null) { tracingControllerManager.dispose(); tracingControllerManager = null; diff --git a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/omid/OmidSessionManager.java b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/omid/OmidSessionManager.java new file mode 100644 index 0000000000..21decbf0f9 --- /dev/null +++ b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/omid/OmidSessionManager.java @@ -0,0 +1,192 @@ +package com.pichillilorenzo.flutter_inappwebview_android.omid; + +import android.content.Context; +import android.os.Handler; +import android.os.Looper; +import android.text.TextUtils; + +import androidx.annotation.NonNull; + +import com.iab.omid.library.megabrainco.Omid; +import com.iab.omid.library.megabrainco.adsession.AdSession; +import com.iab.omid.library.megabrainco.adsession.AdSessionConfiguration; +import com.iab.omid.library.megabrainco.adsession.AdSessionContext; +import com.iab.omid.library.megabrainco.adsession.CreativeType; +import com.iab.omid.library.megabrainco.adsession.ImpressionType; +import com.iab.omid.library.megabrainco.adsession.Owner; +import com.iab.omid.library.megabrainco.adsession.Partner; +import com.pichillilorenzo.flutter_inappwebview_android.InAppWebViewFlutterPlugin; +import com.pichillilorenzo.flutter_inappwebview_android.types.ChannelDelegateImpl; +import com.pichillilorenzo.flutter_inappwebview_android.webview.WebViewInstanceRegistry; +import com.pichillilorenzo.flutter_inappwebview_android.webview.in_app_webview.InAppWebView; + +import java.lang.ref.WeakReference; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + +public class OmidSessionManager extends ChannelDelegateImpl { + public static final String METHOD_CHANNEL_NAME = "kontext_omid"; + private static final int WEBVIEW_HOLD_DURATION_MS = 1100; + + @NonNull + private final InAppWebViewFlutterPlugin plugin; + @NonNull + private final Handler mainHandler = new Handler(Looper.getMainLooper()); + @NonNull + private final Map sessions = new ConcurrentHashMap<>(); + + public OmidSessionManager(@NonNull InAppWebViewFlutterPlugin plugin) { + super(new MethodChannel(plugin.messenger, METHOD_CHANNEL_NAME)); + this.plugin = plugin; + } + + @Override + public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { + switch (call.method) { + case "startOmidSession": + startSession(call, result); + break; + case "stopOmidSession": + stopSession(call, result); + break; + default: + result.notImplemented(); + break; + } + } + + private void startSession(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { + final String instanceId = call.argument("instanceId"); + if (TextUtils.isEmpty(instanceId)) { + result.error("missing_instance_id", "Expected a non-empty instanceId.", null); + return; + } + if (sessions.containsKey(instanceId)) { + result.error("duplicate_session", "An OMID session already exists for instanceId " + instanceId + ".", null); + return; + } + + final InAppWebView webView = WebViewInstanceRegistry.get(instanceId); + if (webView == null) { + result.error("webview_not_found", "No WebView found for instanceId " + instanceId + ".", null); + return; + } + + final String partnerName = call.argument("partnerName"); + final String partnerVersion = call.argument("partnerVersion"); + if (TextUtils.isEmpty(partnerName) || TextUtils.isEmpty(partnerVersion)) { + result.error("invalid_partner", "partnerName and partnerVersion are required.", null); + return; + } + + final String contentUrl = call.argument("contentUrl"); + final String customReferenceData = call.argument("customReferenceData"); + + if (contentUrl != null && contentUrl.length() > 512) { + result.error("invalid_content_url", "contentUrl must be 512 characters or fewer.", null); + return; + } + if (customReferenceData != null && customReferenceData.length() > 256) { + result.error("invalid_custom_reference_data", "customReferenceData must be 256 characters or fewer.", null); + return; + } + + mainHandler.post(() -> { + if (sessions.containsKey(instanceId)) { + result.error("duplicate_session", "An OMID session already exists for instanceId " + instanceId + ".", null); + return; + } + if (!ensureOmidActivated(result)) { + return; + } + try { + Partner partner = Partner.createPartner(partnerName, partnerVersion); + AdSessionContext context = AdSessionContext.createHtmlAdSessionContext( + partner, + webView, + contentUrl, + customReferenceData + ); + AdSessionConfiguration configuration = AdSessionConfiguration.createAdSessionConfiguration( + CreativeType.HTML_DISPLAY, + ImpressionType.BEGIN_TO_RENDER, + Owner.JAVASCRIPT, + Owner.NONE, + false + ); + AdSession adSession = AdSession.createAdSession(configuration, context); + adSession.registerAdView(webView); + adSession.start(); + + sessions.put(instanceId, new OmidSessionState(webView, adSession)); + result.success(true); + } catch (Exception e) { + result.error("session_start_failed", "Failed to start OMID session: " + e.getMessage(), null); + return; + } + }); + } + + private void stopSession(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { + final String instanceId = call.argument("instanceId"); + if (TextUtils.isEmpty(instanceId)) { + result.error("missing_instance_id", "Expected a non-empty instanceId.", null); + return; + } + mainHandler.post(() -> { + if (!Omid.isActive()) { + result.error("omid_inactive", "OM SDK is not active.", null); + return; + } + OmidSessionState sessionState = sessions.remove(instanceId); + if (sessionState == null) { + result.error("session_not_found", "No active OMID session for instanceId " + instanceId + ".", null); + return; + } + try { + sessionState.adSession.finish(); + } catch (Exception e) { + result.error("omid_stop_failed", "Failed to finish OMID session: " + e.getMessage(), null); + return; + } + InAppWebView webView = sessionState.webViewRef.get(); + if (webView != null) { + // The 1.1 second delay (OMID guidance) gives the system time to properly clean up + // any remaining ad-related operations before allowing the WebView to be disposed of. + webView.postDelayed(() -> webView.hashCode(), WEBVIEW_HOLD_DURATION_MS); + } + result.success(true); + }); + } + + private boolean ensureOmidActivated(@NonNull MethodChannel.Result result) { + if (Omid.isActive()) { + return true; + } + Context context = plugin.applicationContext; + if (context == null) { + result.error("omid_activation_failed", "Application context is unavailable for OM SDK activation.", null); + return false; + } + try { + Omid.activate(context); + return true; + } catch (Exception e) { + result.error("omid_activation_failed", "Failed to activate OM SDK: " + e.getMessage(), null); + return false; + } + } + + private static class OmidSessionState { + final WeakReference webViewRef; + final AdSession adSession; + + OmidSessionState(@NonNull InAppWebView webView, @NonNull AdSession adSession) { + this.webViewRef = new WeakReference<>(webView); + this.adSession = adSession; + } + } +} \ No newline at end of file diff --git a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/InAppWebViewManager.java b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/InAppWebViewManager.java index 03f5fa5741..e30bfdb6fb 100755 --- a/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/InAppWebViewManager.java +++ b/flutter_inappwebview_android/android/src/main/java/com/pichillilorenzo/flutter_inappwebview_android/webview/InAppWebViewManager.java @@ -165,24 +165,6 @@ public void onReceiveValue(Boolean value) { } result.success(true); break; - case "getNativeWebViewByInstanceId": - { - String instanceId = (String) call.argument("instanceId"); - if (instanceId == null) { - result.success(null); - break; - } - InAppWebView nativeWebView = WebViewInstanceRegistry.get(instanceId); - if (nativeWebView != null) { - HashMap webViewInfo = new HashMap<>(); - webViewInfo.put("instanceId", instanceId); - webViewInfo.put("hashCode", System.identityHashCode(nativeWebView)); - result.success(webViewInfo); - } else { - result.success(null); - } - } - break; case "getAllRegisteredInstanceIds": result.success(new ArrayList<>(WebViewInstanceRegistry.getRegisteredInstanceIds())); break; @@ -191,7 +173,7 @@ public void onReceiveValue(Boolean value) { String instanceId = (String) call.argument("instanceId"); result.success(instanceId != null && WebViewInstanceRegistry.isRegistered(instanceId)); } - break; + break; default: result.notImplemented(); } diff --git a/flutter_inappwebview_android/lib/src/in_app_webview/in_app_webview_controller.dart b/flutter_inappwebview_android/lib/src/in_app_webview/in_app_webview_controller.dart index 37f254c05a..7a6f8b251f 100644 --- a/flutter_inappwebview_android/lib/src/in_app_webview/in_app_webview_controller.dart +++ b/flutter_inappwebview_android/lib/src/in_app_webview/in_app_webview_controller.dart @@ -2751,11 +2751,6 @@ class AndroidInAppWebViewController extends PlatformInAppWebViewController return id; } - @override - Future getNativeWebViewByInstanceId(String instanceId) async { - return await _staticChannel.invokeMethod('getNativeWebViewByInstanceId', {'instanceId': instanceId}); - } - @override Future> getAllRegisteredInstanceIds() async { final result = await _staticChannel.invokeMethod>('getAllRegisteredInstanceIds'); diff --git a/flutter_inappwebview_ios/ios/Classes/InAppWebView/InAppWebViewManager.swift b/flutter_inappwebview_ios/ios/Classes/InAppWebView/InAppWebViewManager.swift index 0a868aaa03..b00a80990f 100755 --- a/flutter_inappwebview_ios/ios/Classes/InAppWebView/InAppWebViewManager.swift +++ b/flutter_inappwebview_ios/ios/Classes/InAppWebView/InAppWebViewManager.swift @@ -50,17 +50,6 @@ public class InAppWebViewManager: ChannelDelegate { clearAllCache(includeDiskFiles: includeDiskFiles, completionHandler: { result(true) }) - case "getNativeWebViewByInstanceId": - if let instanceId = arguments?["instanceId"] as? String, - let nativeWebView = WebViewInstanceRegistry.get(instanceId: instanceId) { - let webViewInfo: [String: Any] = [ - "instanceId": instanceId, - "hashCode": Int(bitPattern: Unmanaged.passUnretained(nativeWebView).toOpaque()) - ] - result(webViewInfo) - } else { - result(nil) - } case "getAllRegisteredInstanceIds": result(WebViewInstanceRegistry.getRegisteredInstanceIds()) case "isInstanceIdRegistered": diff --git a/flutter_inappwebview_ios/ios/Classes/OmidSessionManager.swift b/flutter_inappwebview_ios/ios/Classes/OmidSessionManager.swift new file mode 100644 index 0000000000..983b459775 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Classes/OmidSessionManager.swift @@ -0,0 +1,146 @@ +import Foundation +import WebKit +import OMSDK_Megabrainco + +@available(iOS 11.0, *) public class OmidSessionManager: ChannelDelegate { + static let methodChannelName = "kontext_omid" + private var sessions: [String: OmidSessionState] = [:] + + private struct OmidSessionState { + weak var webView: InAppWebView? + let adSession: OMIDMegabraincoAdSession + } + + init ? (plugin: SwiftFlutterPlugin) { + guard let registrar = plugin.registrar else { + return nil + } + let channel = FlutterMethodChannel(name: OmidSessionManager.methodChannelName, binaryMessenger: registrar.messenger()) + super.init(channel: channel) + } + + public override func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + guard let arguments = call.arguments as? [String: Any?] else { + result(FlutterError(code: "invalid_arguments", message: "Expected argument map.", details: nil)) + return + } + + switch call.method { + case "startOmidSession": + startSession(arguments: arguments, result: result) + case "stopOmidSession": + stopSession(arguments: arguments, result: result) + default: + result(FlutterMethodNotImplemented) + } + } + + public func disposeSessions() { + DispatchQueue.main.async { + for state in self.sessions.values { + state.adSession.finish() + } + self.sessions.removeAll() + } + } + + private func startSession(arguments: [String: Any?], result: @escaping FlutterResult) { + guard let instanceId = arguments["instanceId"] as? String, !instanceId.isEmpty else { + result(FlutterError(code: "missing_instance_id", message: "Expected a non-empty instanceId.", details: nil)) + return + } + guard sessions[instanceId] == nil else { + result(FlutterError(code: "duplicate_session", message: "An OMID session already exists for instanceId \(instanceId).", details: nil)) + return + } + guard let webView = WebViewInstanceRegistry.get(instanceId: instanceId) else { + result(FlutterError(code: "webview_not_found", message: "No WebView found for instanceId \(instanceId).", details: nil)) + return + } + guard let partnerName = arguments["partnerName"] as? String, !partnerName.isEmpty, + let partnerVersion = arguments["partnerVersion"] as? String, !partnerVersion.isEmpty else { + result(FlutterError(code: "invalid_partner", message: "partnerName and partnerVersion are required.", details: nil)) + return + } + if let customReferenceData = arguments["customReferenceData"] as? String, customReferenceData.count > 256 { + result(FlutterError(code: "invalid_custom_reference_data", message: "customReferenceData must be 256 characters or fewer.", details: nil)) + return + } + + DispatchQueue.main.async { [weak self] in + guard let self = self else { return } + guard self.sessions[instanceId] == nil else { + result(FlutterError(code: "duplicate_session", message: "An OMID session already exists for instanceId \(instanceId).", details: nil)) + return + } + guard self.ensureOmidActivated(result: result) else { + return + } + let partner = OMIDMegabraincoPartner(name: partnerName, versionString: partnerVersion) + guard let partner = partner else { + result(FlutterError(code: "session_start_failed", message: "Failed to create OMID partner instance.", details: nil)) + return + } + + let contentUrl = arguments["contentUrl"] as? String + let customReferenceData = arguments["customReferenceData"] as? String + do { + + let adSessionContext = try OMIDMegabraincoAdSessionContext( + partner: partner, + webView: webView, + contentUrl: contentUrl, + customReferenceIdentifier: customReferenceData + ) + + let adSessionConfiguration = try OMIDMegabraincoAdSessionConfiguration( + creativeType: .htmlDisplay, + impressionType: .beginToRender, + impressionOwner: .javaScriptOwner, + mediaEventsOwner: .noneOwner, + isolateVerificationScripts: false + ) + + let adSession = try OMIDMegabraincoAdSession( + configuration: adSessionConfiguration, + adSessionContext: adSessionContext + ) + + adSession.mainAdView = webView + adSession.start() + self.sessions[instanceId] = OmidSessionState(webView: webView, adSession: adSession) + result(true) + } catch { + result(FlutterError(code: "session_start_failed", message: "Failed to start OMID session.", details: error.localizedDescription)) + } + } + } + + private func stopSession(arguments: [String: Any?], result: @escaping FlutterResult) { + guard let instanceId = arguments["instanceId"] as? String, !instanceId.isEmpty else { + result(FlutterError(code: "missing_instance_id", message: "Expected a non-empty instanceId.", details: nil)) + return + } + DispatchQueue.main.async { + if let state = self.sessions.removeValue(forKey: instanceId) { + state.adSession.finish() + result(true) + } else { + result(FlutterError(code: "session_not_found", message: "No OMID session for instanceId \(instanceId).", details: nil)) + } + } + } + + + private func ensureOmidActivated(result: @escaping FlutterResult) -> Bool { + let sdk = OMIDMegabraincoSDK.shared + if sdk.isActive { + return true + } + if sdk.activate() { + return true + } + result(FlutterError(code: "omid_activation_failed", message: "Failed to activate OM SDK.", details: nil)) + return false + } +} diff --git a/flutter_inappwebview_ios/ios/Classes/SwiftFlutterPlugin.swift b/flutter_inappwebview_ios/ios/Classes/SwiftFlutterPlugin.swift index 22eaecdcd2..991a253ba0 100755 --- a/flutter_inappwebview_ios/ios/Classes/SwiftFlutterPlugin.swift +++ b/flutter_inappwebview_ios/ios/Classes/SwiftFlutterPlugin.swift @@ -35,7 +35,8 @@ public class SwiftFlutterPlugin: NSObject, FlutterPlugin { var chromeSafariBrowserManager: ChromeSafariBrowserManager? var webAuthenticationSessionManager: WebAuthenticationSessionManager? var printJobManager: PrintJobManager? - + @available(iOS 11.0, *) + var omidSessionManager: OmidSessionManager? var webViewControllers: [String: InAppBrowserWebViewController?] = [:] var safariViewControllers: [String: Any?] = [:] @@ -59,6 +60,9 @@ public class SwiftFlutterPlugin: NSObject, FlutterPlugin { } webAuthenticationSessionManager = WebAuthenticationSessionManager(plugin: self) printJobManager = PrintJobManager(plugin: self) + if #available(iOS 11.0, *) { + omidSessionManager = OmidSessionManager(plugin: self) + } } public static func register(with registrar: FlutterPluginRegistrar) { @@ -90,5 +94,10 @@ public class SwiftFlutterPlugin: NSObject, FlutterPlugin { webAuthenticationSessionManager = nil printJobManager?.dispose() printJobManager = nil + if #available(iOS 11.0, *) { + omidSessionManager?.disposeSessions() + omidSessionManager?.dispose() + omidSessionManager = nil + } } } diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/Info.plist b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/Info.plist new file mode 100644 index 0000000000..2a003883b9 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/Info.plist @@ -0,0 +1,75 @@ + + + + + AvailableLibraries + + + BinaryPath + OMSDK_Megabrainco.framework/OMSDK_Megabrainco + LibraryIdentifier + ios-arm64 + LibraryPath + OMSDK_Megabrainco.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + OMSDK_Megabrainco.framework/OMSDK_Megabrainco + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + OMSDK_Megabrainco.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + OMSDK_Megabrainco.framework/OMSDK_Megabrainco + LibraryIdentifier + tvos-arm64 + LibraryPath + OMSDK_Megabrainco.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + tvos + + + BinaryPath + OMSDK_Megabrainco.framework/OMSDK_Megabrainco + LibraryIdentifier + tvos-arm64_x86_64-simulator + LibraryPath + OMSDK_Megabrainco.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + tvos + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h new file mode 100644 index 0000000000..15d67f737a --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h @@ -0,0 +1,50 @@ +// +// OMIDAdEvents.h +// AppVerificationLibrary +// +// Created by Daria Sukhonosova on 22/06/2017. +// + +#import +#import "OMIDAdSession.h" +#import "OMIDVASTProperties.h" + +/** + * Ad event API enabling the integration partner to signal to all verification providers when key events have occurred. + * Only one ad events implementation can be associated with the ad session and any attempt to create multiple instances will result in an error. + */ +@interface OMIDMegabraincoAdEvents : NSObject + +/** + * Initializes ad events instance associated with the supplied ad session. + * + * @param session The ad session associated with the ad events. + * @return A new ad events instance associated with the supplied ad session. Returns nil if the supplied ad session is nil or if an ad events instance has already been registered with the ad session. + */ +- (nullable instancetype)initWithAdSession:(nonnull OMIDMegabraincoAdSession *)session error:(NSError * _Nullable * _Nullable)error; + +/** + * Notifies the ad session that an impression event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * + * NOTE: the ad session will be automatically started if this method has been called first. + */ +- (BOOL)impressionOccurredWithError:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies the ad session that display loaded event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + */ +- (BOOL)loadedWithError:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies the ad session that video/audio loaded event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * @param vastProperties contains static information about the video/audio placement. + */ +- (BOOL)loadedWithVastProperties:(OMIDMegabraincoVASTProperties *_Nonnull)vastProperties + error:(NSError *_Nullable *_Nullable)error; +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h new file mode 100644 index 0000000000..e9e9c38f26 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h @@ -0,0 +1,134 @@ +// +// OMIDAdSession.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import +#import "OMIDAdSessionContext.h" +#import "OMIDAdSessionConfiguration.h" +#import "OMIDFriendlyObstructionType.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * List of supported error types. + */ +typedef NS_ENUM(NSUInteger, OMIDErrorType) { + /** + * The integration is publishing a "generic" error to verification scripts. + */ + OMIDErrorGeneric = 1, + /** + * The integration is publishing a "video" error to verification scripts. + */ + OMIDErrorMedia = 2 +}; + +/** + * Ad session API enabling the integration partner to notify OMID of key state relating to viewability calculations. + * In addition to viewability this API will also notify all verification providers of key ad session lifecycle events. + */ +@interface OMIDMegabraincoAdSession : NSObject + +/** + * The AdSession configuration is used for check owners. + */ +@property(nonatomic, readonly) OMIDMegabraincoAdSessionConfiguration *configuration; +/** + * The native view which is used for viewability tracking. + */ +@property(nonatomic, weak, nullable) UIView *mainAdView; + +/** + * Initializes new ad session supplying the context. + * + * Note that creating an OMIDAdSession sends a message to the OM SDK JS Service running in the + * webview. If the OM SDK JS Service has not loaded before the ad session is created, the + * message is lost, and the verification scripts will not receive any events. + * + * To prevent this, the implementation must wait until the webview finishes loading OM SDK + * JavaScript before creating the OMIDAdSession. The easiest way is to create the OMIDAdSession + * in a webview delegate callback (-[WKNavigationDelegate webView:didFinishNavigation:]. Alternatively, + * if an implementation can receive an HTML5 DOMContentLoaded event from the webview, it can create + * the OMIDAdSession in a message handler for that event. + * + * @param context The context that provides the required information for initialising the ad session. + * @return A new OMIDAdSession instance, or nil if the supplied context is nil. + */ +- (nullable instancetype)initWithConfiguration:(OMIDMegabraincoAdSessionConfiguration *)configuration + adSessionContext:(OMIDMegabraincoAdSessionContext *)context + error:(NSError *_Nullable *_Nullable)error; + + +/** + * Notifies all verification providers that the ad session has started and ad view tracking will begin. + * + * This method will have no affect if called after the ad session has finished. + */ +- (void)start; + +/** + * Notifies all verification providers that the ad session has finished and all ad view tracking will stop. + * + * This method will have no affect if called after the ad session has finished. + * + * Note that ending an OMID ad session sends a message to the verification scripts running inside + * the webview supplied by the integration. So that the verification scripts have enough time to + * handle the 'sessionFinish' event, the integration must maintain a strong reference to the webview + * for at least 1.0 seconds after ending the session. + */ +- (void)finish; + +/** + * Adds friendly obstruction which should then be excluded from all ad session viewability calculations. + * It also provides a purpose and detailed reason string to pass forward to the measurement vendors. + * + * This method will have no affect if called after the ad session has finished. + * + * @param friendlyObstruction The view to be excluded from all ad session viewability calculations. + * @param purpose The purpose of why this obstruction was necessary. + * @param detailedReason An explanation for why this obstruction is part of the ad experience if not already + * obvious from the purpose. Can be nil. If not nil, must be 50 characters or less and only contain characers + * `A-z`, `0-9`, or spaces. + * @return Whether this friendly obstruction was successfully added. If the session has finished or the + * friendlyObstruction has already been added for this session, this method will return NO with no associated + * error object. However, if one or more arguments are against requirements, it will return NO with an error + * object assigned. + */ +- (BOOL)addFriendlyObstruction:(UIView *)friendlyObstruction + purpose:(OMIDFriendlyObstructionType)purpose + detailedReason:(nullable NSString *)detailedReason + error:(NSError *_Nullable *_Nullable)error; + +/** + * Removes registered friendly obstruction. + * + * This method will have no affect if called after the ad session has finished. + * + * @param friendlyObstruction The view to be removed from the list of registered friendly obstructions. + */ +- (void)removeFriendlyObstruction:(UIView *)friendlyObstruction; + +/** + * Utility method to remove all registered friendly obstructions. + * + * This method will have no affect if called after the ad session has finished. + */ +- (void)removeAllFriendlyObstructions; + +/** + * Notifies the ad session that an error has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * + * @param errorType The type of error. + * @param message The message containing details of the error. + */ +- (void)logErrorWithType:(OMIDErrorType)errorType message:(NSString *)message +NS_SWIFT_NAME(logError(withType:message:)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h new file mode 100644 index 0000000000..b84824044b --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h @@ -0,0 +1,135 @@ +// +// OMIDAdSessionConfiguration.h +// AppVerificationLibrary +// +// Created by Saraev Vyacheslav on 15/09/2017. +// + +#import + +/** + * Identifies which integration layer is responsible for sending certain events. + */ +typedef NS_ENUM(NSUInteger, OMIDOwner) { + /** The integration will send the event from a JavaScript session script. */ + OMIDJavaScriptOwner = 1, + /** The integration will send the event from the native layer. */ + OMIDNativeOwner = 2, + /** The integration will not send the event. */ + OMIDNoneOwner = 3 +}; + + +/** + * List of supported creative types. + */ +typedef NS_ENUM(NSUInteger, OMIDCreativeType) { + /** + * Creative type will be set by JavaScript session script. + * Integrations must also pass `OMIDJavaScriptOwner` for `impressionOwner`. + */ + OMIDCreativeTypeDefinedByJavaScript = 1, + // Remaining values set creative type in native layer. + /** + * Rendered in webview, verification code can be inside creative or in metadata. + */ + OMIDCreativeTypeHtmlDisplay = 2, + /** + * Rendered by native, verification code provided in metadata only. + */ + OMIDCreativeTypeNativeDisplay = 3, + /** + * Rendered instream or as standalone video, verification code provided in metadata. + */ + OMIDCreativeTypeVideo = 4, + /** + * Similar to video but only contains audio media. + */ + OMIDCreativeTypeAudio = 5 +}; + +/** + * The criterion for an ad session's OMID impression event. + * Declaring an impression type makes it easier to understand discrepancies between measurers + * of the ad session, since many metrics depend on impressions. + */ +typedef NS_ENUM(NSUInteger, OMIDImpressionType) { + /** + * ImpressionType will be set by JavaScript session script. + * Integrations must also pass `OMIDJavaScriptOwner` for `impressionOwner`. + */ + OMIDImpressionTypeDefinedByJavaScript = 1, + // Remaining values set ImpressionType in native layer. + /** + * The integration is not declaring the criteria for the OMID impression. + */ + OMIDImpressionTypeUnspecified = 2, + /** + * The integration is using count-on-download criteria for the OMID impression. + */ + OMIDImpressionTypeLoaded = 3, + /** + * The integration is using begin-to-render criteria for the OMID impression. + */ + OMIDImpressionTypeBeginToRender = 4, + /** + * The integration is using one-pixel criteria (when the creative has at least 1 visible pixel on + * screen) for the OMID impression. + */ + OMIDImpressionTypeOnePixel = 5, + /** + * The integration is using viewable criteria (1 second for display, 2 seconds while playing for + * video, and at least 50% of the creative is visible) for the OMID impression. + */ + OMIDImpressionTypeViewable = 6, + /** + * The integration is using audible criteria (2 continuous second of media playback with non-zero + * volume) for the OMID impression. + */ + OMIDImpressionTypeAudible = 7, + /** + * The integration's criteria uses none of the above criteria for the OMID impression. + */ + OMIDImpressionTypeOther = 8 +}; + +/** + * The ad session configuration supplies the owner for both the impression and video events. + * The OM SDK JS service will use this information to help identify where the source of these + * events is expected to be received. + */ +@interface OMIDMegabraincoAdSessionConfiguration : NSObject + +@property OMIDCreativeType creativeType; +@property OMIDImpressionType impressionType; +@property OMIDOwner impressionOwner; +@property OMIDOwner mediaEventsOwner; +@property BOOL isolateVerificationScripts; + +/** + * Create new ad session configuration supplying the owner for both the impression and media + * events along with the type of creative being rendered/measured. + * The OM SDK JS service will use this information to help identify where the source of these + * events is expected to be received. + * @param creativeType the type of creative to be rendered in this session. + * @param impressionType the type of impression to be triggered in this session. + * @param impressionOwner whether the native or JavaScript layer should be responsible for supplying + * the impression event. + * @param mediaEventsOwner whether the native or JavaScript layer should be responsible for + * supplying media events. This needs to be set only for non-display ad sessions and can be set to + * `OMIDNoneOwner` for display. When the creativeType is `OMIDCreativeTypeDefinedByJavaScript` then + * this should be set to `OMIDJavaScriptOwner` + * @param isolateVerificationScripts determines whether verification scripts will be placed in a + * sandboxed environment. This will not have any effect for native sessions. + * @return A new session configuration instance. Returns nil and sets error if OM SDK isn't active + * or arguments are invalid. + */ +- (nullable instancetype)initWithCreativeType:(OMIDCreativeType)creativeType + impressionType:(OMIDImpressionType)impressionType + impressionOwner:(OMIDOwner)impressionOwner + mediaEventsOwner:(OMIDOwner)mediaEventsOwner + isolateVerificationScripts:(BOOL)isolateVerificationScripts + error:(NSError *_Nullable *_Nullable)error; + +@end + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h new file mode 100644 index 0000000000..10c5430b75 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h @@ -0,0 +1,126 @@ +// +// Created by Daria Sukhonosova on 19/04/16. +// + +#import + +#if !(TARGET_OS_TV) +#import +#endif + +#import "OMIDPartner.h" +#import "OMIDUniversalAdID.h" +#import "OMIDVerificationScriptResource.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Provides the ad session with details of the partner and whether to an HTML, + * JavaScript, or native session. + */ +@interface OMIDMegabraincoAdSessionContext : NSObject + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +#if !(TARGET_OS_TV) + +/** + * Initializes a new ad session context providing reference to partner and web view where + * the OM SDK JavaScript service has been injected. + * + * Calling this method will set the ad session type to `html`. + *

+ * NOTE: any attempt to create a new ad session will fail if OM SDK has not been + * activated (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param webView The WKWebView responsible for serving the ad content. The receiver holds a weak reference only. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new HTML context instance. Returns nil if OM SDK has not been activated or if + * any of the parameters are nil. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + webView:(WKWebView *)webView + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; +#endif + +/** + * Initializes a new ad session context providing reference to partner and a list of + * script resources which should be managed by OMID. + * + * Calling this method will set the ad session type to `native`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param resources The array of all verification providers who expect to receive OMID + * event data. Must contain at least one verification script. The receiver creates a + * deep copy of the array. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new native context instance. Returns nil if OMID has not been activated or if any of the parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + script:(NSString *)script + resources:(NSArray *)resources + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; + +/** + * Initializes a new ad session context providing reference to partner, an optional universalAdID and a list of + * script resources which should be managed by OMID. + * + * Calling this method will set the ad session type to `native`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param resources The array of all verification providers who expect to receive OMID + * event data. Must contain at least one verification script. The receiver creates a + * deep copy of the array. + * @param contentUrl contains the universal link to the ad's screen. + * @param universalAdID optional identifier for an ad creative. See {@link OMIDUniversalAdID} class for more information. + * @return A new native context instance. Returns nil if OMID has not been activated or if any of the required parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + script:(NSString *)script + resources:(NSArray *)resources + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + universalAdID:(nullable OMIDMegabraincoUniversalAdID *)universalAdID + error:(NSError *_Nullable *_Nullable)error; + +#if !(TARGET_OS_TV) +/** + * Initializes a new ad session context providing reference to partner and web view where + * OM SDK JavaScript service has been injected. + * + * Calling this method will set the ad session type to `javascript`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param webView The WKWebView responsible for serving the ad content. The receiver holds a weak reference only. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new JavaScript context instance. Returns nil if OM SDK has not been + * activated or if any of the parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + javaScriptWebView:(WKWebView *)webView + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; +#endif + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h new file mode 100644 index 0000000000..ee7bc6acab --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h @@ -0,0 +1,30 @@ +// +// OMIDFriendlyObstructionType.h +// AppVerificationLibrary +// +// Created by Andrew Whitcomb on 4/3/19. +// Copyright © 2019 Integral Ad Science, Inc. All rights reserved. +// + +/** + * List of allowed friendly obstruction purposes. + */ +typedef NS_ENUM(NSUInteger, OMIDFriendlyObstructionType) { + /** + * The friendly obstruction relates to interacting with a video (such as play/pause buttons). + */ + OMIDFriendlyObstructionMediaControls, + /** + * The friendly obstruction relates to closing an ad (such as a close button). + */ + OMIDFriendlyObstructionCloseAd, + /** + * The friendly obstruction is not visibly obstructing the ad but may seem so due to technical + * limitations. + */ + OMIDFriendlyObstructionNotVisible, + /** + * The friendly obstruction is obstructing for any purpose not already described. + */ + OMIDFriendlyObstructionOther +}; diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDImports.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDImports.h new file mode 100644 index 0000000000..cec6373055 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDImports.h @@ -0,0 +1,10 @@ +#import "OMIDSDK.h" +#import "OMIDScriptInjector.h" +#import "OMIDPartner.h" +#import "OMIDVerificationScriptResource.h" +#import "OMIDAdSessionContext.h" +#import "OMIDAdSession.h" +#import "OMIDAdEvents.h" +#import "OMIDVASTProperties.h" +#import "OMIDMediaEvents.h" +#import "OMIDJavaScriptSessionService.h" diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h new file mode 100644 index 0000000000..480c0e19c3 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h @@ -0,0 +1,109 @@ +#include +#if !(TARGET_OS_TV) + +#import +#import +#import "OMIDFriendlyObstructionType.h" +#import "OMIDPartner.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Service supporting ad sessions managed (started/finished) via JavaScript Session Client APIs + * by providing native-layer measurement signals. + * If the JS Session Client is running in a web view, an instance of this service must be + * initialized with the web view before starting or finishing ad sessions using JS APIs. + * Only one instance of this service may be initialized at a time for a given web view; to reuse a + * web view the current instance must be torn down (see `tearDownWithCompletion`). + */ +@interface OMIDMegabraincoJavaScriptSessionService : NSObject + +/** + * Initializes an instance of the service. + * + * @param partner Details of the integration partner responsible for ad sessions. + * @param webView The web view responsible for starting/finishing ad sessions via the JS Session + * Client. + * @param isHTMLAdView Whether the ad is rendered in HTML inside of the provided web view. + * If true, all ad sessions will be of type "html" and calling `setAdView` is + * not required. + * If false, all ad sessions will be of type "javascript" and `setAdView` must + * be called after initialization. + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + webView:(WKWebView *)webView + isHTMLAdView:(BOOL)isHTMLAdView + error:(NSError *_Nullable *_Nullable)error; + +/** + * Tears down this instance of the service. + * Calling this method will cause OM SDK to begin a teardown process including finishing all currently + * active ad sessions measured by this service instance and tearing down communication with the OM + * SDK's JavaScript layer running in the web view. + * This may require up to one second, for example in order to allow verification scripts time to process + * the `sessionFinish` event. + * Once this process has completed, the web view may be torn down or reused for another instance of + * the service without any adverse effects. If there is no need to tear down or reuse the web view, this + * method is not required. + * @param completionBlock Invoked by OM SDK after the teardown process has completed, + * or one second, whichever comes sooner. + */ +- (void)tearDownWithCompletion:(void (^)(BOOL success, NSError *_Nullable error))completionBlock; + +/** + * The native view containing the ad. + * This property is readonly and must be set using `setAdView`. + * If `isHTMLAdView` was passed as true in `initWithPartner`, this will equal + * the web view by default. + */ +@property(readonly, nonatomic, weak) UIView *adView; + +/** + * Sets the native view that contains the ad and is used for viewability tracking. + * If `isHTMLAdView` was passed as true in `initWithPartner`, this method is + * not required since the ad view will be set to the web view by default. + * @param adView The native view. + * @return Whether the ad view was successfully set. + */ +- (BOOL)setAdView:(nullable UIView *)adView + error:(NSError **)error; + +/** + * Adds a friendly obstruction which should then be excluded from all ad session viewability + * calculations. While this instance of OMIDJavaScriptSessionService is running, this friendly + * obstruction will be added to each ad session started by the integrator via the JS Session Client + * until the obstruction is removed by calling `removeFriendlyObstruction` or + * `removeAllFriendlyObstructions`. + * + * @param friendlyObstruction The view to be excluded from all ad session viewability calculations. + * @param purpose The purpose of why this obstruction was necessary. + * @param detailedReason An explanation for why this obstruction is part of the ad experience if not + * already obvious from the purpose. Can be nil. If not nil, must be 50 characters or less and only + * contain characters `A-z`, `0-9`, or spaces. + * @return Whether this friendly obstruction was successfully added. If the friendlyObstruction has + * already been added for this session, this method will return NO with no associated error object. + * However, if one or more arguments are against requirements, it will return NO with an error + * object assigned. + */ +- (BOOL)addFriendlyObstruction:(UIView *)friendlyObstruction + purpose:(OMIDFriendlyObstructionType)purpose + detailedReason:(nullable NSString *)detailedReason + error:(NSError *_Nullable *_Nullable)error; + +/** + * Removes a registered friendly obstruction from any currently running and future ad sessions + * measured by this instance of OMIDJavaScriptSessionService. + */ +- (void)removeFriendlyObstruction:(UIView *)friendlyObstruction; + +/** + * Removes all registered friendly obstructions from any currently running and future ad sessions + * measured by this instance of OMIDJavaScriptSessionService. + */ +- (void)removeAllFriendlyObstructions; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h new file mode 100644 index 0000000000..0459e0538e --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h @@ -0,0 +1,155 @@ +// +// OMIDMediaEvents.h +// AppVerificationLibrary +// +// Created by Justin Hines on 6/13/19. +// + +#import +#import "OMIDAdSession.h" +#import "OMIDVASTProperties.h" + +/** + * List of supported media event player states. + */ +typedef NS_ENUM(NSUInteger, OMIDPlayerState) { + /** + * The player is collapsed in such a way that the video is hidden. + * The video may or may not still be progressing in this state, and sound may be audible. + * This refers specifically to the video player state on the page, and not the state of + * the browser window. + */ + OMIDPlayerStateMinimized, + /** + * The player has been reduced from its original size. + * The video is still potentially visible. + */ + OMIDPlayerStateCollapsed, + /** + * The player's default playback size. + */ + OMIDPlayerStateNormal, + /** + * The player has expanded from its original size. + */ + OMIDPlayerStateExpanded, + /** + * The player has entered fullscreen mode. + */ + OMIDPlayerStateFullscreen +}; + +/** + * List of supported media event user interaction types. + */ +typedef NS_ENUM(NSUInteger, OMIDInteractionType) { + /** + * The user clicked to load the ad's landing page. + */ + OMIDInteractionTypeClick, + /** + * The user engaged with ad content to load a separate experience. + */ + OMIDInteractionTypeAcceptInvitation +}; + +/** + * This provides a complete list of native media events supported by OMID. + * Using this event API assumes the media player is fully responsible for communicating all media events at the appropriate times. + * Only one media events implementation can be associated with the ad session and any attempt to create multiple instances will result in an error. + */ +@interface OMIDMegabraincoMediaEvents : NSObject + +/** + * Initializes media events instance for the associated ad session. + * Any attempt to create a media events instance will fail if the supplied ad session has already started. + * + * @param session The ad session associated with the ad events. + * @return A new media events instance. Returns nil if the supplied ad session is nil or if a media events instance has already been registered with the ad session or if a media events instance has been created after the ad session has started. + * @see OMIDAdSession + */ +- (nullable instancetype)initWithAdSession:(nonnull OMIDMegabraincoAdSession *)session error:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies all media listeners that media content has started playing. + * + * @param duration The duration of the selected media (in seconds). + * @param mediaPlayerVolume The volume from the native media player with a range between 0 and 1. + */ +- (void)startWithDuration:(CGFloat)duration + mediaPlayerVolume:(CGFloat)mediaPlayerVolume; + +/** + * Notifies all media listeners that media playback has reached the first quartile. + */ +- (void)firstQuartile; + +/** + * Notifies all media listeners that media playback has reached the midpoint. + */ +- (void)midpoint; + +/** + * Notifies all media listeners that media playback has reached the third quartile. + */ +- (void)thirdQuartile; + +/** + * Notifies all media listeners that media playback is complete. + */ +- (void)complete; + +/** + * Notifies all media listeners that media playback has paused after a user interaction. + */ +- (void)pause; + +/** + * Notifies all media listeners that media playback has resumed after being paused. + */ +- (void)resume; + +/** + * Notifies all media listeners that media playback has stopped as a user skip interaction. + * Once skipped, it should not be possible for the media to resume playing content. + */ +- (void)skipped; + +/** + * Notifies all media listeners that media playback has stopped and started buffering. + */ +- (void)bufferStart; + +/** + * Notifies all media listeners that buffering has finished and media playback has resumed. + */ +- (void)bufferFinish; + +/** + * Notifies all media listeners that the media player volume has changed. + * + * @param playerVolume The volume from the native media player with a range between 0 and 1. + */ +- (void)volumeChangeTo:(CGFloat)playerVolume; + +/** + * Notifies all media listeners that media player state has changed. + * See `OMIDPlayerState` for list of supported states. + * + * @param playerState The latest media player state. + * @see OMIDPlayerState + */ +- (void)playerStateChangeTo:(OMIDPlayerState)playerState; + +/** + * Notifies all media listeners that the user has performed an ad interaction. + * See `OMIDInteractionType` for a list of supported types. + * + * @param interactionType The latest user integration. + * @see OMIDInteractionType + */ +- (void)adUserInteractionWithType:(OMIDInteractionType)interactionType +NS_SWIFT_NAME(adUserInteraction(withType:)); + +@end + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h new file mode 100644 index 0000000000..13aebbad1b --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h @@ -0,0 +1,32 @@ +// +// OMIDPartner.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import + +/** + * Details about the integration partner which will be supplied to the ad session. + */ +@interface OMIDMegabraincoPartner : NSObject + +@property(nonatomic, readonly, nonnull) NSString *name; +@property(nonatomic, readonly, nonnull) NSString *versionString; + +/** + * Initializes new partner instance providing both name and versionString. + * + * Both name and version are mandatory. + * + * @param name It is used to uniquely identify the integration partner. + * @param versionString It is used to uniquely identify the integration partner. + * @return A new partner instance, or nil if any of the parameters are either null or blank + */ +- (nullable instancetype)initWithName:(nonnull NSString *)name + versionString:(nonnull NSString *)versionString; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h new file mode 100644 index 0000000000..2bdf6979cb --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h @@ -0,0 +1,58 @@ +// +// OMIDSDK.h +// AppVerificationLibrary +// +// Created by Daria on 05/06/2017. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * This application level class will be called by all integration partners to ensure OM SDK has been activated before calling any other API methods. + * Any attempt to use other API methods prior to activation will result in an error. + * + * Note that OM SDK may only be used on the main UI thread. + * Make sure you are on the main thread when you initialize the SDK, create its + * objects, and invoke its methods. + */ +@interface OMIDMegabraincoSDK : NSObject + +/** + * The current semantic version of the integrated OMID library. + */ ++ (NSString *)versionString; + +/** + * Shared OMIDSDK instance. + */ +@property(class, readonly) OMIDMegabraincoSDK *sharedInstance +NS_SWIFT_NAME(shared); + +/** + * A Boolean value indicating whether OM SDK has been activated. + * + * @discussion Check that OM SDK is active prior to creating any ad sessions. + */ +@property(atomic, readonly, getter=isActive) BOOL active; + +/** + * Activate OM SDK before calling other API methods. + * + * @discussion Activation sets up the OM SDK environment. In CTV apps (running tvOS), `activate` should be called on launch in + * order to capture a "last activity" timestamp on launch and each time the user foregrounds the app). + * + * @return Boolean indicating success. + */ +- (BOOL)activate; + +/** + * Update the last activity time + * After activating OM SDK in CTV apps, refresh the "last activity" timestamp in response to user input prior to starting an ad session. + */ +- (void)updateLastActivity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h new file mode 100644 index 0000000000..f56d7c2fd1 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h @@ -0,0 +1,26 @@ +// +// OMIDScriptInjector.h +// AppVerificationLibrary +// +// Created by Daria on 21/06/2017. +// + +#import + +/** + * Utility class which enables integration partners to use a standard approach for injecting OM SDK JS into the served tag HTML content. + */ +@interface OMIDMegabraincoScriptInjector : NSObject + +/* + Injects the downloaded OMID JS content into the served HTML. + @param scriptContent containing the OMID JS service content to be injected into the hidden tracking web view. + @param html of the tag content which should be modified to include the downloaded OMID JS content. + @param error If an error occurs, contains an NSError object. + @return modified HTML including OMID JS or nil if an error occurs. + */ ++ (nullable NSString *)injectScriptContent:(nonnull NSString *)scriptContent + intoHTML:(nonnull NSString *)html + error:(NSError *_Nullable *_Nullable)error; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h new file mode 100644 index 0000000000..c704f6b218 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h @@ -0,0 +1,40 @@ +// +// OMIDUniversalAdID.h +// AppVerificationLibrary +// +// Created by Teodor Cristea on 31.03.2025. +// Copyright © 2025 IAB Techlab. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Details about the UniversalAdID for the purpose of tracking ad creatives which will be supplied to the ad session. + */ +@interface OMIDMegabraincoUniversalAdID : NSObject + +@property(nonatomic, readonly, nonnull) NSString *value; +@property(nonatomic, readonly, nonnull) NSString *idRegistry; + +/** + * Initializes new UniversalAdID instance providing both value and idRegistry. + * The UniversalAdID's purpose is to identify an ad creative across different platforms throughout the lifecycle of an advertising campaign. + * + * Both value and idRegistry are mandatory. + * + * @param value It is used to identify the unique creative identifier. + * @param idRegistry It is used to identify the URL for the registry website where the unique creative ID is cataloged. + * @return A new UniversalAdID instance, or nil if any of the parameters are either null or blank + */ +- (nullable instancetype)initWithValue:(nonnull NSString *)value + idRegistry:(nonnull NSString *)idRegistry + error:(NSError *_Nullable *_Nullable)error; + ++ (instancetype)new NS_UNAVAILABLE; +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h new file mode 100644 index 0000000000..4963ce4014 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h @@ -0,0 +1,71 @@ +// +// OMIDVASTProperties.h +// AppVerificationLibrary +// +// Created by Daria Sukhonosova on 30/06/2017. +// + +#import + +/** + * List of supported media player positions. + */ +typedef NS_ENUM(NSUInteger, OMIDPosition) { + /** + * The ad plays preceding video content. + */ + OMIDPositionPreroll, + /** + * The ad plays in the middle of video content, or between two separate content videos. + */ + OMIDPositionMidroll, + /** + * The ad plays following video content. + */ + OMIDPositionPostroll, + /** + * The ad plays independently of any video content. + */ + OMIDPositionStandalone +}; + +/** + * This object is used to capture key VAST properties so this can be shared with all registered verification providers. + */ +@interface OMIDMegabraincoVASTProperties : NSObject + +@property(nonatomic, readonly, getter = isSkippable) BOOL skippable; +@property(nonatomic, readonly) CGFloat skipOffset; +@property(nonatomic, readonly, getter = isAutoPlay) BOOL autoPlay; +@property(nonatomic, readonly) OMIDPosition position; + +/** + * This method enables the media player to create a new VAST properties instance for skippable media ad placement. + * + * @param skipOffset The number of seconds before the skip button is presented. + * @param autoPlay Determines whether the media will auto-play content. + * @param position The position of the media in relation to other content. + * @return A new instance of VAST properties. + */ +- (nonnull instancetype)initWithSkipOffset:(CGFloat)skipOffset + autoPlay:(BOOL)autoPlay + position:(OMIDPosition)position; + +/** + * This method enables the media player to create a new VAST properties instance for non-skippable media ad placement. + * + * @param autoPlay Determines whether the media will auto-play content. + * @param position The position of the media in relation to other content. + * @return A new instance of VAST properties. + */ +- (nonnull instancetype)initWithAutoPlay:(BOOL)autoPlay + position:(OMIDPosition)position; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +/** + * For OM SDK internal use only. + */ +- (NSDictionary *_Nonnull)toJSON; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h new file mode 100644 index 0000000000..7e27ceb4fc --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h @@ -0,0 +1,45 @@ +// +// OMIDVerificationScriptResource.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import + +/** + * Details about the verification provider which will be supplied to the ad session. + */ +@interface OMIDMegabraincoVerificationScriptResource : NSObject + +@property(nonatomic, readonly, nonnull) NSURL *URL; +@property(nonatomic, readonly, nullable) NSString *vendorKey; +@property(nonatomic, readonly, nullable) NSString *parameters; + +/** + * Initializes new verification script resource instance which requires vendor specific verification parameters. + * + * When calling this method all arguments are mandatory. + * + * @param vendorKey It is used to uniquely identify the verification provider. + * @param URL The URL to be injected into the OMID managed JavaScript execution environment. + * @param parameters The parameters which the verification provider script is expecting for the ad session. + * @return A new verification script resource instance, or nil if any of the parameters are either null or blank. + */ +- (nullable instancetype)initWithURL:(nonnull NSURL *)URL + vendorKey:(nonnull NSString *)vendorKey + parameters:(nonnull NSString *)parameters; + +/** + * Initializes new verification script resource instance which does not require any vendor specific verification parameters. + * + * When calling this method all arguments are mandatory. + * + * @param URL The URL to be injected into the OMID managed JavaScript execution environment. + * @return A new verification script resource instance, or nil if URL is nil or blank. + */ +- (nullable instancetype)initWithURL:(nonnull NSURL *)URL; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMSDK.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMSDK.h new file mode 100644 index 0000000000..bc3714adb7 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Headers/OMSDK.h @@ -0,0 +1,18 @@ +// +// OMSDK.h +// OMSDK +// +// Created by Nathanael Hardy on 10/16/20. +// + +#import + +//! Project version number for OMSDK. +FOUNDATION_EXPORT double OMSDKVersionNumber; + +//! Project version string for OMSDK. +FOUNDATION_EXPORT const unsigned char OMSDKVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Info.plist b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Info.plist new file mode 100644 index 0000000000..1e34ca9f4d Binary files /dev/null and b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Info.plist differ diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Modules/module.modulemap b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Modules/module.modulemap new file mode 100644 index 0000000000..68be4ac04a --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +module OMSDK_Megabrainco { + header "Headers/OMIDImports.h" + export * +} diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/OMSDK_Megabrainco b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/OMSDK_Megabrainco new file mode 100755 index 0000000000..5291ff8d15 Binary files /dev/null and b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/OMSDK_Megabrainco differ diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..5ab7e387bd --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,42 @@ + + + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeProductInteraction + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeAdvertisingData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h new file mode 100644 index 0000000000..15d67f737a --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h @@ -0,0 +1,50 @@ +// +// OMIDAdEvents.h +// AppVerificationLibrary +// +// Created by Daria Sukhonosova on 22/06/2017. +// + +#import +#import "OMIDAdSession.h" +#import "OMIDVASTProperties.h" + +/** + * Ad event API enabling the integration partner to signal to all verification providers when key events have occurred. + * Only one ad events implementation can be associated with the ad session and any attempt to create multiple instances will result in an error. + */ +@interface OMIDMegabraincoAdEvents : NSObject + +/** + * Initializes ad events instance associated with the supplied ad session. + * + * @param session The ad session associated with the ad events. + * @return A new ad events instance associated with the supplied ad session. Returns nil if the supplied ad session is nil or if an ad events instance has already been registered with the ad session. + */ +- (nullable instancetype)initWithAdSession:(nonnull OMIDMegabraincoAdSession *)session error:(NSError * _Nullable * _Nullable)error; + +/** + * Notifies the ad session that an impression event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * + * NOTE: the ad session will be automatically started if this method has been called first. + */ +- (BOOL)impressionOccurredWithError:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies the ad session that display loaded event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + */ +- (BOOL)loadedWithError:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies the ad session that video/audio loaded event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * @param vastProperties contains static information about the video/audio placement. + */ +- (BOOL)loadedWithVastProperties:(OMIDMegabraincoVASTProperties *_Nonnull)vastProperties + error:(NSError *_Nullable *_Nullable)error; +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h new file mode 100644 index 0000000000..e9e9c38f26 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h @@ -0,0 +1,134 @@ +// +// OMIDAdSession.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import +#import "OMIDAdSessionContext.h" +#import "OMIDAdSessionConfiguration.h" +#import "OMIDFriendlyObstructionType.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * List of supported error types. + */ +typedef NS_ENUM(NSUInteger, OMIDErrorType) { + /** + * The integration is publishing a "generic" error to verification scripts. + */ + OMIDErrorGeneric = 1, + /** + * The integration is publishing a "video" error to verification scripts. + */ + OMIDErrorMedia = 2 +}; + +/** + * Ad session API enabling the integration partner to notify OMID of key state relating to viewability calculations. + * In addition to viewability this API will also notify all verification providers of key ad session lifecycle events. + */ +@interface OMIDMegabraincoAdSession : NSObject + +/** + * The AdSession configuration is used for check owners. + */ +@property(nonatomic, readonly) OMIDMegabraincoAdSessionConfiguration *configuration; +/** + * The native view which is used for viewability tracking. + */ +@property(nonatomic, weak, nullable) UIView *mainAdView; + +/** + * Initializes new ad session supplying the context. + * + * Note that creating an OMIDAdSession sends a message to the OM SDK JS Service running in the + * webview. If the OM SDK JS Service has not loaded before the ad session is created, the + * message is lost, and the verification scripts will not receive any events. + * + * To prevent this, the implementation must wait until the webview finishes loading OM SDK + * JavaScript before creating the OMIDAdSession. The easiest way is to create the OMIDAdSession + * in a webview delegate callback (-[WKNavigationDelegate webView:didFinishNavigation:]. Alternatively, + * if an implementation can receive an HTML5 DOMContentLoaded event from the webview, it can create + * the OMIDAdSession in a message handler for that event. + * + * @param context The context that provides the required information for initialising the ad session. + * @return A new OMIDAdSession instance, or nil if the supplied context is nil. + */ +- (nullable instancetype)initWithConfiguration:(OMIDMegabraincoAdSessionConfiguration *)configuration + adSessionContext:(OMIDMegabraincoAdSessionContext *)context + error:(NSError *_Nullable *_Nullable)error; + + +/** + * Notifies all verification providers that the ad session has started and ad view tracking will begin. + * + * This method will have no affect if called after the ad session has finished. + */ +- (void)start; + +/** + * Notifies all verification providers that the ad session has finished and all ad view tracking will stop. + * + * This method will have no affect if called after the ad session has finished. + * + * Note that ending an OMID ad session sends a message to the verification scripts running inside + * the webview supplied by the integration. So that the verification scripts have enough time to + * handle the 'sessionFinish' event, the integration must maintain a strong reference to the webview + * for at least 1.0 seconds after ending the session. + */ +- (void)finish; + +/** + * Adds friendly obstruction which should then be excluded from all ad session viewability calculations. + * It also provides a purpose and detailed reason string to pass forward to the measurement vendors. + * + * This method will have no affect if called after the ad session has finished. + * + * @param friendlyObstruction The view to be excluded from all ad session viewability calculations. + * @param purpose The purpose of why this obstruction was necessary. + * @param detailedReason An explanation for why this obstruction is part of the ad experience if not already + * obvious from the purpose. Can be nil. If not nil, must be 50 characters or less and only contain characers + * `A-z`, `0-9`, or spaces. + * @return Whether this friendly obstruction was successfully added. If the session has finished or the + * friendlyObstruction has already been added for this session, this method will return NO with no associated + * error object. However, if one or more arguments are against requirements, it will return NO with an error + * object assigned. + */ +- (BOOL)addFriendlyObstruction:(UIView *)friendlyObstruction + purpose:(OMIDFriendlyObstructionType)purpose + detailedReason:(nullable NSString *)detailedReason + error:(NSError *_Nullable *_Nullable)error; + +/** + * Removes registered friendly obstruction. + * + * This method will have no affect if called after the ad session has finished. + * + * @param friendlyObstruction The view to be removed from the list of registered friendly obstructions. + */ +- (void)removeFriendlyObstruction:(UIView *)friendlyObstruction; + +/** + * Utility method to remove all registered friendly obstructions. + * + * This method will have no affect if called after the ad session has finished. + */ +- (void)removeAllFriendlyObstructions; + +/** + * Notifies the ad session that an error has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * + * @param errorType The type of error. + * @param message The message containing details of the error. + */ +- (void)logErrorWithType:(OMIDErrorType)errorType message:(NSString *)message +NS_SWIFT_NAME(logError(withType:message:)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h new file mode 100644 index 0000000000..b84824044b --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h @@ -0,0 +1,135 @@ +// +// OMIDAdSessionConfiguration.h +// AppVerificationLibrary +// +// Created by Saraev Vyacheslav on 15/09/2017. +// + +#import + +/** + * Identifies which integration layer is responsible for sending certain events. + */ +typedef NS_ENUM(NSUInteger, OMIDOwner) { + /** The integration will send the event from a JavaScript session script. */ + OMIDJavaScriptOwner = 1, + /** The integration will send the event from the native layer. */ + OMIDNativeOwner = 2, + /** The integration will not send the event. */ + OMIDNoneOwner = 3 +}; + + +/** + * List of supported creative types. + */ +typedef NS_ENUM(NSUInteger, OMIDCreativeType) { + /** + * Creative type will be set by JavaScript session script. + * Integrations must also pass `OMIDJavaScriptOwner` for `impressionOwner`. + */ + OMIDCreativeTypeDefinedByJavaScript = 1, + // Remaining values set creative type in native layer. + /** + * Rendered in webview, verification code can be inside creative or in metadata. + */ + OMIDCreativeTypeHtmlDisplay = 2, + /** + * Rendered by native, verification code provided in metadata only. + */ + OMIDCreativeTypeNativeDisplay = 3, + /** + * Rendered instream or as standalone video, verification code provided in metadata. + */ + OMIDCreativeTypeVideo = 4, + /** + * Similar to video but only contains audio media. + */ + OMIDCreativeTypeAudio = 5 +}; + +/** + * The criterion for an ad session's OMID impression event. + * Declaring an impression type makes it easier to understand discrepancies between measurers + * of the ad session, since many metrics depend on impressions. + */ +typedef NS_ENUM(NSUInteger, OMIDImpressionType) { + /** + * ImpressionType will be set by JavaScript session script. + * Integrations must also pass `OMIDJavaScriptOwner` for `impressionOwner`. + */ + OMIDImpressionTypeDefinedByJavaScript = 1, + // Remaining values set ImpressionType in native layer. + /** + * The integration is not declaring the criteria for the OMID impression. + */ + OMIDImpressionTypeUnspecified = 2, + /** + * The integration is using count-on-download criteria for the OMID impression. + */ + OMIDImpressionTypeLoaded = 3, + /** + * The integration is using begin-to-render criteria for the OMID impression. + */ + OMIDImpressionTypeBeginToRender = 4, + /** + * The integration is using one-pixel criteria (when the creative has at least 1 visible pixel on + * screen) for the OMID impression. + */ + OMIDImpressionTypeOnePixel = 5, + /** + * The integration is using viewable criteria (1 second for display, 2 seconds while playing for + * video, and at least 50% of the creative is visible) for the OMID impression. + */ + OMIDImpressionTypeViewable = 6, + /** + * The integration is using audible criteria (2 continuous second of media playback with non-zero + * volume) for the OMID impression. + */ + OMIDImpressionTypeAudible = 7, + /** + * The integration's criteria uses none of the above criteria for the OMID impression. + */ + OMIDImpressionTypeOther = 8 +}; + +/** + * The ad session configuration supplies the owner for both the impression and video events. + * The OM SDK JS service will use this information to help identify where the source of these + * events is expected to be received. + */ +@interface OMIDMegabraincoAdSessionConfiguration : NSObject + +@property OMIDCreativeType creativeType; +@property OMIDImpressionType impressionType; +@property OMIDOwner impressionOwner; +@property OMIDOwner mediaEventsOwner; +@property BOOL isolateVerificationScripts; + +/** + * Create new ad session configuration supplying the owner for both the impression and media + * events along with the type of creative being rendered/measured. + * The OM SDK JS service will use this information to help identify where the source of these + * events is expected to be received. + * @param creativeType the type of creative to be rendered in this session. + * @param impressionType the type of impression to be triggered in this session. + * @param impressionOwner whether the native or JavaScript layer should be responsible for supplying + * the impression event. + * @param mediaEventsOwner whether the native or JavaScript layer should be responsible for + * supplying media events. This needs to be set only for non-display ad sessions and can be set to + * `OMIDNoneOwner` for display. When the creativeType is `OMIDCreativeTypeDefinedByJavaScript` then + * this should be set to `OMIDJavaScriptOwner` + * @param isolateVerificationScripts determines whether verification scripts will be placed in a + * sandboxed environment. This will not have any effect for native sessions. + * @return A new session configuration instance. Returns nil and sets error if OM SDK isn't active + * or arguments are invalid. + */ +- (nullable instancetype)initWithCreativeType:(OMIDCreativeType)creativeType + impressionType:(OMIDImpressionType)impressionType + impressionOwner:(OMIDOwner)impressionOwner + mediaEventsOwner:(OMIDOwner)mediaEventsOwner + isolateVerificationScripts:(BOOL)isolateVerificationScripts + error:(NSError *_Nullable *_Nullable)error; + +@end + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h new file mode 100644 index 0000000000..10c5430b75 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h @@ -0,0 +1,126 @@ +// +// Created by Daria Sukhonosova on 19/04/16. +// + +#import + +#if !(TARGET_OS_TV) +#import +#endif + +#import "OMIDPartner.h" +#import "OMIDUniversalAdID.h" +#import "OMIDVerificationScriptResource.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Provides the ad session with details of the partner and whether to an HTML, + * JavaScript, or native session. + */ +@interface OMIDMegabraincoAdSessionContext : NSObject + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +#if !(TARGET_OS_TV) + +/** + * Initializes a new ad session context providing reference to partner and web view where + * the OM SDK JavaScript service has been injected. + * + * Calling this method will set the ad session type to `html`. + *

+ * NOTE: any attempt to create a new ad session will fail if OM SDK has not been + * activated (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param webView The WKWebView responsible for serving the ad content. The receiver holds a weak reference only. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new HTML context instance. Returns nil if OM SDK has not been activated or if + * any of the parameters are nil. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + webView:(WKWebView *)webView + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; +#endif + +/** + * Initializes a new ad session context providing reference to partner and a list of + * script resources which should be managed by OMID. + * + * Calling this method will set the ad session type to `native`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param resources The array of all verification providers who expect to receive OMID + * event data. Must contain at least one verification script. The receiver creates a + * deep copy of the array. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new native context instance. Returns nil if OMID has not been activated or if any of the parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + script:(NSString *)script + resources:(NSArray *)resources + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; + +/** + * Initializes a new ad session context providing reference to partner, an optional universalAdID and a list of + * script resources which should be managed by OMID. + * + * Calling this method will set the ad session type to `native`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param resources The array of all verification providers who expect to receive OMID + * event data. Must contain at least one verification script. The receiver creates a + * deep copy of the array. + * @param contentUrl contains the universal link to the ad's screen. + * @param universalAdID optional identifier for an ad creative. See {@link OMIDUniversalAdID} class for more information. + * @return A new native context instance. Returns nil if OMID has not been activated or if any of the required parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + script:(NSString *)script + resources:(NSArray *)resources + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + universalAdID:(nullable OMIDMegabraincoUniversalAdID *)universalAdID + error:(NSError *_Nullable *_Nullable)error; + +#if !(TARGET_OS_TV) +/** + * Initializes a new ad session context providing reference to partner and web view where + * OM SDK JavaScript service has been injected. + * + * Calling this method will set the ad session type to `javascript`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param webView The WKWebView responsible for serving the ad content. The receiver holds a weak reference only. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new JavaScript context instance. Returns nil if OM SDK has not been + * activated or if any of the parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + javaScriptWebView:(WKWebView *)webView + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; +#endif + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h new file mode 100644 index 0000000000..ee7bc6acab --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h @@ -0,0 +1,30 @@ +// +// OMIDFriendlyObstructionType.h +// AppVerificationLibrary +// +// Created by Andrew Whitcomb on 4/3/19. +// Copyright © 2019 Integral Ad Science, Inc. All rights reserved. +// + +/** + * List of allowed friendly obstruction purposes. + */ +typedef NS_ENUM(NSUInteger, OMIDFriendlyObstructionType) { + /** + * The friendly obstruction relates to interacting with a video (such as play/pause buttons). + */ + OMIDFriendlyObstructionMediaControls, + /** + * The friendly obstruction relates to closing an ad (such as a close button). + */ + OMIDFriendlyObstructionCloseAd, + /** + * The friendly obstruction is not visibly obstructing the ad but may seem so due to technical + * limitations. + */ + OMIDFriendlyObstructionNotVisible, + /** + * The friendly obstruction is obstructing for any purpose not already described. + */ + OMIDFriendlyObstructionOther +}; diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDImports.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDImports.h new file mode 100644 index 0000000000..cec6373055 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDImports.h @@ -0,0 +1,10 @@ +#import "OMIDSDK.h" +#import "OMIDScriptInjector.h" +#import "OMIDPartner.h" +#import "OMIDVerificationScriptResource.h" +#import "OMIDAdSessionContext.h" +#import "OMIDAdSession.h" +#import "OMIDAdEvents.h" +#import "OMIDVASTProperties.h" +#import "OMIDMediaEvents.h" +#import "OMIDJavaScriptSessionService.h" diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h new file mode 100644 index 0000000000..480c0e19c3 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h @@ -0,0 +1,109 @@ +#include +#if !(TARGET_OS_TV) + +#import +#import +#import "OMIDFriendlyObstructionType.h" +#import "OMIDPartner.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Service supporting ad sessions managed (started/finished) via JavaScript Session Client APIs + * by providing native-layer measurement signals. + * If the JS Session Client is running in a web view, an instance of this service must be + * initialized with the web view before starting or finishing ad sessions using JS APIs. + * Only one instance of this service may be initialized at a time for a given web view; to reuse a + * web view the current instance must be torn down (see `tearDownWithCompletion`). + */ +@interface OMIDMegabraincoJavaScriptSessionService : NSObject + +/** + * Initializes an instance of the service. + * + * @param partner Details of the integration partner responsible for ad sessions. + * @param webView The web view responsible for starting/finishing ad sessions via the JS Session + * Client. + * @param isHTMLAdView Whether the ad is rendered in HTML inside of the provided web view. + * If true, all ad sessions will be of type "html" and calling `setAdView` is + * not required. + * If false, all ad sessions will be of type "javascript" and `setAdView` must + * be called after initialization. + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + webView:(WKWebView *)webView + isHTMLAdView:(BOOL)isHTMLAdView + error:(NSError *_Nullable *_Nullable)error; + +/** + * Tears down this instance of the service. + * Calling this method will cause OM SDK to begin a teardown process including finishing all currently + * active ad sessions measured by this service instance and tearing down communication with the OM + * SDK's JavaScript layer running in the web view. + * This may require up to one second, for example in order to allow verification scripts time to process + * the `sessionFinish` event. + * Once this process has completed, the web view may be torn down or reused for another instance of + * the service without any adverse effects. If there is no need to tear down or reuse the web view, this + * method is not required. + * @param completionBlock Invoked by OM SDK after the teardown process has completed, + * or one second, whichever comes sooner. + */ +- (void)tearDownWithCompletion:(void (^)(BOOL success, NSError *_Nullable error))completionBlock; + +/** + * The native view containing the ad. + * This property is readonly and must be set using `setAdView`. + * If `isHTMLAdView` was passed as true in `initWithPartner`, this will equal + * the web view by default. + */ +@property(readonly, nonatomic, weak) UIView *adView; + +/** + * Sets the native view that contains the ad and is used for viewability tracking. + * If `isHTMLAdView` was passed as true in `initWithPartner`, this method is + * not required since the ad view will be set to the web view by default. + * @param adView The native view. + * @return Whether the ad view was successfully set. + */ +- (BOOL)setAdView:(nullable UIView *)adView + error:(NSError **)error; + +/** + * Adds a friendly obstruction which should then be excluded from all ad session viewability + * calculations. While this instance of OMIDJavaScriptSessionService is running, this friendly + * obstruction will be added to each ad session started by the integrator via the JS Session Client + * until the obstruction is removed by calling `removeFriendlyObstruction` or + * `removeAllFriendlyObstructions`. + * + * @param friendlyObstruction The view to be excluded from all ad session viewability calculations. + * @param purpose The purpose of why this obstruction was necessary. + * @param detailedReason An explanation for why this obstruction is part of the ad experience if not + * already obvious from the purpose. Can be nil. If not nil, must be 50 characters or less and only + * contain characters `A-z`, `0-9`, or spaces. + * @return Whether this friendly obstruction was successfully added. If the friendlyObstruction has + * already been added for this session, this method will return NO with no associated error object. + * However, if one or more arguments are against requirements, it will return NO with an error + * object assigned. + */ +- (BOOL)addFriendlyObstruction:(UIView *)friendlyObstruction + purpose:(OMIDFriendlyObstructionType)purpose + detailedReason:(nullable NSString *)detailedReason + error:(NSError *_Nullable *_Nullable)error; + +/** + * Removes a registered friendly obstruction from any currently running and future ad sessions + * measured by this instance of OMIDJavaScriptSessionService. + */ +- (void)removeFriendlyObstruction:(UIView *)friendlyObstruction; + +/** + * Removes all registered friendly obstructions from any currently running and future ad sessions + * measured by this instance of OMIDJavaScriptSessionService. + */ +- (void)removeAllFriendlyObstructions; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h new file mode 100644 index 0000000000..0459e0538e --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h @@ -0,0 +1,155 @@ +// +// OMIDMediaEvents.h +// AppVerificationLibrary +// +// Created by Justin Hines on 6/13/19. +// + +#import +#import "OMIDAdSession.h" +#import "OMIDVASTProperties.h" + +/** + * List of supported media event player states. + */ +typedef NS_ENUM(NSUInteger, OMIDPlayerState) { + /** + * The player is collapsed in such a way that the video is hidden. + * The video may or may not still be progressing in this state, and sound may be audible. + * This refers specifically to the video player state on the page, and not the state of + * the browser window. + */ + OMIDPlayerStateMinimized, + /** + * The player has been reduced from its original size. + * The video is still potentially visible. + */ + OMIDPlayerStateCollapsed, + /** + * The player's default playback size. + */ + OMIDPlayerStateNormal, + /** + * The player has expanded from its original size. + */ + OMIDPlayerStateExpanded, + /** + * The player has entered fullscreen mode. + */ + OMIDPlayerStateFullscreen +}; + +/** + * List of supported media event user interaction types. + */ +typedef NS_ENUM(NSUInteger, OMIDInteractionType) { + /** + * The user clicked to load the ad's landing page. + */ + OMIDInteractionTypeClick, + /** + * The user engaged with ad content to load a separate experience. + */ + OMIDInteractionTypeAcceptInvitation +}; + +/** + * This provides a complete list of native media events supported by OMID. + * Using this event API assumes the media player is fully responsible for communicating all media events at the appropriate times. + * Only one media events implementation can be associated with the ad session and any attempt to create multiple instances will result in an error. + */ +@interface OMIDMegabraincoMediaEvents : NSObject + +/** + * Initializes media events instance for the associated ad session. + * Any attempt to create a media events instance will fail if the supplied ad session has already started. + * + * @param session The ad session associated with the ad events. + * @return A new media events instance. Returns nil if the supplied ad session is nil or if a media events instance has already been registered with the ad session or if a media events instance has been created after the ad session has started. + * @see OMIDAdSession + */ +- (nullable instancetype)initWithAdSession:(nonnull OMIDMegabraincoAdSession *)session error:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies all media listeners that media content has started playing. + * + * @param duration The duration of the selected media (in seconds). + * @param mediaPlayerVolume The volume from the native media player with a range between 0 and 1. + */ +- (void)startWithDuration:(CGFloat)duration + mediaPlayerVolume:(CGFloat)mediaPlayerVolume; + +/** + * Notifies all media listeners that media playback has reached the first quartile. + */ +- (void)firstQuartile; + +/** + * Notifies all media listeners that media playback has reached the midpoint. + */ +- (void)midpoint; + +/** + * Notifies all media listeners that media playback has reached the third quartile. + */ +- (void)thirdQuartile; + +/** + * Notifies all media listeners that media playback is complete. + */ +- (void)complete; + +/** + * Notifies all media listeners that media playback has paused after a user interaction. + */ +- (void)pause; + +/** + * Notifies all media listeners that media playback has resumed after being paused. + */ +- (void)resume; + +/** + * Notifies all media listeners that media playback has stopped as a user skip interaction. + * Once skipped, it should not be possible for the media to resume playing content. + */ +- (void)skipped; + +/** + * Notifies all media listeners that media playback has stopped and started buffering. + */ +- (void)bufferStart; + +/** + * Notifies all media listeners that buffering has finished and media playback has resumed. + */ +- (void)bufferFinish; + +/** + * Notifies all media listeners that the media player volume has changed. + * + * @param playerVolume The volume from the native media player with a range between 0 and 1. + */ +- (void)volumeChangeTo:(CGFloat)playerVolume; + +/** + * Notifies all media listeners that media player state has changed. + * See `OMIDPlayerState` for list of supported states. + * + * @param playerState The latest media player state. + * @see OMIDPlayerState + */ +- (void)playerStateChangeTo:(OMIDPlayerState)playerState; + +/** + * Notifies all media listeners that the user has performed an ad interaction. + * See `OMIDInteractionType` for a list of supported types. + * + * @param interactionType The latest user integration. + * @see OMIDInteractionType + */ +- (void)adUserInteractionWithType:(OMIDInteractionType)interactionType +NS_SWIFT_NAME(adUserInteraction(withType:)); + +@end + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h new file mode 100644 index 0000000000..13aebbad1b --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h @@ -0,0 +1,32 @@ +// +// OMIDPartner.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import + +/** + * Details about the integration partner which will be supplied to the ad session. + */ +@interface OMIDMegabraincoPartner : NSObject + +@property(nonatomic, readonly, nonnull) NSString *name; +@property(nonatomic, readonly, nonnull) NSString *versionString; + +/** + * Initializes new partner instance providing both name and versionString. + * + * Both name and version are mandatory. + * + * @param name It is used to uniquely identify the integration partner. + * @param versionString It is used to uniquely identify the integration partner. + * @return A new partner instance, or nil if any of the parameters are either null or blank + */ +- (nullable instancetype)initWithName:(nonnull NSString *)name + versionString:(nonnull NSString *)versionString; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h new file mode 100644 index 0000000000..2bdf6979cb --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h @@ -0,0 +1,58 @@ +// +// OMIDSDK.h +// AppVerificationLibrary +// +// Created by Daria on 05/06/2017. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * This application level class will be called by all integration partners to ensure OM SDK has been activated before calling any other API methods. + * Any attempt to use other API methods prior to activation will result in an error. + * + * Note that OM SDK may only be used on the main UI thread. + * Make sure you are on the main thread when you initialize the SDK, create its + * objects, and invoke its methods. + */ +@interface OMIDMegabraincoSDK : NSObject + +/** + * The current semantic version of the integrated OMID library. + */ ++ (NSString *)versionString; + +/** + * Shared OMIDSDK instance. + */ +@property(class, readonly) OMIDMegabraincoSDK *sharedInstance +NS_SWIFT_NAME(shared); + +/** + * A Boolean value indicating whether OM SDK has been activated. + * + * @discussion Check that OM SDK is active prior to creating any ad sessions. + */ +@property(atomic, readonly, getter=isActive) BOOL active; + +/** + * Activate OM SDK before calling other API methods. + * + * @discussion Activation sets up the OM SDK environment. In CTV apps (running tvOS), `activate` should be called on launch in + * order to capture a "last activity" timestamp on launch and each time the user foregrounds the app). + * + * @return Boolean indicating success. + */ +- (BOOL)activate; + +/** + * Update the last activity time + * After activating OM SDK in CTV apps, refresh the "last activity" timestamp in response to user input prior to starting an ad session. + */ +- (void)updateLastActivity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h new file mode 100644 index 0000000000..f56d7c2fd1 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h @@ -0,0 +1,26 @@ +// +// OMIDScriptInjector.h +// AppVerificationLibrary +// +// Created by Daria on 21/06/2017. +// + +#import + +/** + * Utility class which enables integration partners to use a standard approach for injecting OM SDK JS into the served tag HTML content. + */ +@interface OMIDMegabraincoScriptInjector : NSObject + +/* + Injects the downloaded OMID JS content into the served HTML. + @param scriptContent containing the OMID JS service content to be injected into the hidden tracking web view. + @param html of the tag content which should be modified to include the downloaded OMID JS content. + @param error If an error occurs, contains an NSError object. + @return modified HTML including OMID JS or nil if an error occurs. + */ ++ (nullable NSString *)injectScriptContent:(nonnull NSString *)scriptContent + intoHTML:(nonnull NSString *)html + error:(NSError *_Nullable *_Nullable)error; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h new file mode 100644 index 0000000000..c704f6b218 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h @@ -0,0 +1,40 @@ +// +// OMIDUniversalAdID.h +// AppVerificationLibrary +// +// Created by Teodor Cristea on 31.03.2025. +// Copyright © 2025 IAB Techlab. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Details about the UniversalAdID for the purpose of tracking ad creatives which will be supplied to the ad session. + */ +@interface OMIDMegabraincoUniversalAdID : NSObject + +@property(nonatomic, readonly, nonnull) NSString *value; +@property(nonatomic, readonly, nonnull) NSString *idRegistry; + +/** + * Initializes new UniversalAdID instance providing both value and idRegistry. + * The UniversalAdID's purpose is to identify an ad creative across different platforms throughout the lifecycle of an advertising campaign. + * + * Both value and idRegistry are mandatory. + * + * @param value It is used to identify the unique creative identifier. + * @param idRegistry It is used to identify the URL for the registry website where the unique creative ID is cataloged. + * @return A new UniversalAdID instance, or nil if any of the parameters are either null or blank + */ +- (nullable instancetype)initWithValue:(nonnull NSString *)value + idRegistry:(nonnull NSString *)idRegistry + error:(NSError *_Nullable *_Nullable)error; + ++ (instancetype)new NS_UNAVAILABLE; +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h new file mode 100644 index 0000000000..4963ce4014 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h @@ -0,0 +1,71 @@ +// +// OMIDVASTProperties.h +// AppVerificationLibrary +// +// Created by Daria Sukhonosova on 30/06/2017. +// + +#import + +/** + * List of supported media player positions. + */ +typedef NS_ENUM(NSUInteger, OMIDPosition) { + /** + * The ad plays preceding video content. + */ + OMIDPositionPreroll, + /** + * The ad plays in the middle of video content, or between two separate content videos. + */ + OMIDPositionMidroll, + /** + * The ad plays following video content. + */ + OMIDPositionPostroll, + /** + * The ad plays independently of any video content. + */ + OMIDPositionStandalone +}; + +/** + * This object is used to capture key VAST properties so this can be shared with all registered verification providers. + */ +@interface OMIDMegabraincoVASTProperties : NSObject + +@property(nonatomic, readonly, getter = isSkippable) BOOL skippable; +@property(nonatomic, readonly) CGFloat skipOffset; +@property(nonatomic, readonly, getter = isAutoPlay) BOOL autoPlay; +@property(nonatomic, readonly) OMIDPosition position; + +/** + * This method enables the media player to create a new VAST properties instance for skippable media ad placement. + * + * @param skipOffset The number of seconds before the skip button is presented. + * @param autoPlay Determines whether the media will auto-play content. + * @param position The position of the media in relation to other content. + * @return A new instance of VAST properties. + */ +- (nonnull instancetype)initWithSkipOffset:(CGFloat)skipOffset + autoPlay:(BOOL)autoPlay + position:(OMIDPosition)position; + +/** + * This method enables the media player to create a new VAST properties instance for non-skippable media ad placement. + * + * @param autoPlay Determines whether the media will auto-play content. + * @param position The position of the media in relation to other content. + * @return A new instance of VAST properties. + */ +- (nonnull instancetype)initWithAutoPlay:(BOOL)autoPlay + position:(OMIDPosition)position; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +/** + * For OM SDK internal use only. + */ +- (NSDictionary *_Nonnull)toJSON; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h new file mode 100644 index 0000000000..7e27ceb4fc --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h @@ -0,0 +1,45 @@ +// +// OMIDVerificationScriptResource.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import + +/** + * Details about the verification provider which will be supplied to the ad session. + */ +@interface OMIDMegabraincoVerificationScriptResource : NSObject + +@property(nonatomic, readonly, nonnull) NSURL *URL; +@property(nonatomic, readonly, nullable) NSString *vendorKey; +@property(nonatomic, readonly, nullable) NSString *parameters; + +/** + * Initializes new verification script resource instance which requires vendor specific verification parameters. + * + * When calling this method all arguments are mandatory. + * + * @param vendorKey It is used to uniquely identify the verification provider. + * @param URL The URL to be injected into the OMID managed JavaScript execution environment. + * @param parameters The parameters which the verification provider script is expecting for the ad session. + * @return A new verification script resource instance, or nil if any of the parameters are either null or blank. + */ +- (nullable instancetype)initWithURL:(nonnull NSURL *)URL + vendorKey:(nonnull NSString *)vendorKey + parameters:(nonnull NSString *)parameters; + +/** + * Initializes new verification script resource instance which does not require any vendor specific verification parameters. + * + * When calling this method all arguments are mandatory. + * + * @param URL The URL to be injected into the OMID managed JavaScript execution environment. + * @return A new verification script resource instance, or nil if URL is nil or blank. + */ +- (nullable instancetype)initWithURL:(nonnull NSURL *)URL; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMSDK.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMSDK.h new file mode 100644 index 0000000000..bc3714adb7 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMSDK.h @@ -0,0 +1,18 @@ +// +// OMSDK.h +// OMSDK +// +// Created by Nathanael Hardy on 10/16/20. +// + +#import + +//! Project version number for OMSDK. +FOUNDATION_EXPORT double OMSDKVersionNumber; + +//! Project version string for OMSDK. +FOUNDATION_EXPORT const unsigned char OMSDKVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Info.plist b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Info.plist new file mode 100644 index 0000000000..73eb8a12c3 Binary files /dev/null and b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Info.plist differ diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Modules/module.modulemap b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Modules/module.modulemap new file mode 100644 index 0000000000..68be4ac04a --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +module OMSDK_Megabrainco { + header "Headers/OMIDImports.h" + export * +} diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/OMSDK_Megabrainco b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/OMSDK_Megabrainco new file mode 100755 index 0000000000..51950336da Binary files /dev/null and b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/OMSDK_Megabrainco differ diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..5ab7e387bd --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,42 @@ + + + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeProductInteraction + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeAdvertisingData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/_CodeSignature/CodeResources b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000000..036977a444 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/ios-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/_CodeSignature/CodeResources @@ -0,0 +1,289 @@ + + + + + files + + Headers/OMIDAdEvents.h + + R9XY4sAv7ACgYsnZxPBTpYl5hRs= + + Headers/OMIDAdSession.h + + 3reryn2fVrrRTVjyPc42DveBrmg= + + Headers/OMIDAdSessionConfiguration.h + + 4cPpAT11JSmQNVevkHrDNvjOdVg= + + Headers/OMIDAdSessionContext.h + + cI53/kOW1gfnQPzrSTrGuNUMgiQ= + + Headers/OMIDFriendlyObstructionType.h + + ymPA8TI4PL8pK0zhc5ilyQj/SsA= + + Headers/OMIDImports.h + + /ghw/vX0KUlF9SSq4LZhhZDpZb4= + + Headers/OMIDJavaScriptSessionService.h + + fPjHNfetXwGpfNowCFFO8+yFw5c= + + Headers/OMIDMediaEvents.h + + nsgrVEO3DVQoUx9dA30wxxFV0Sg= + + Headers/OMIDPartner.h + + l0f3NDOHI4SlBoOQw9LnA66yrcA= + + Headers/OMIDSDK.h + + eYodqoQbrAYjcea3m1ozTki5uXA= + + Headers/OMIDScriptInjector.h + + cRiyJME2HiNGbnCTYMdrPh7qYqA= + + Headers/OMIDUniversalAdID.h + + 7Cr44fA+sS4Zoh0adycqUlmDQio= + + Headers/OMIDVASTProperties.h + + KMGNcWnWevzkVsOxM8KFuYiYV0E= + + Headers/OMIDVerificationScriptResource.h + + idhPGXC9PENISWWbJfi8iXHXnoQ= + + Headers/OMSDK.h + + SwK6aatAfFlLHnP2+J8eYoZyaqs= + + Info.plist + + nUGkLmAbDrVx+tQt9jOFlNfV75k= + + Modules/module.modulemap + + HYhqPxaRJ9xYI0UlwlmISpeg44I= + + PrivacyInfo.xcprivacy + + 7BgfS40JHW2Znl7afTrGvxB58Ws= + + + files2 + + Headers/OMIDAdEvents.h + + hash2 + + CoY20RTXjoC637zlFcOKRmDKJa/zNChWvFY4GWNn+o8= + + + Headers/OMIDAdSession.h + + hash2 + + SYKR0XeG/Comhyb6YVAcIvvdDK5eDRfUMW1rDTXq5Zk= + + + Headers/OMIDAdSessionConfiguration.h + + hash2 + + W7Z/jVKmfs+A6wV39QRhZvDDfH7OPEYm2D5Eq6PQlfI= + + + Headers/OMIDAdSessionContext.h + + hash2 + + 5DsZzwMopMYP2JjFVz9NYt/0I3wsrng+4PTU/b5Ovow= + + + Headers/OMIDFriendlyObstructionType.h + + hash2 + + /ZmBFlTK7mS0fZy4WqxCTpfhwDAEA4qlDHoed4FawBg= + + + Headers/OMIDImports.h + + hash2 + + XQBgb62m3DEN2XBtnlS+hqca4MEIuBJjq6po9fIbZco= + + + Headers/OMIDJavaScriptSessionService.h + + hash2 + + xfs8xwzBa7Wl161ejYUDVUnYPoKe+DTOf8Xez+HPE7c= + + + Headers/OMIDMediaEvents.h + + hash2 + + LT3wOdTJNIJm9MWK2HckPI88lMnQCp9ox7in4gOUK9Q= + + + Headers/OMIDPartner.h + + hash2 + + 505FF5MLvAs+ygkl/uw8g7qNNY4KxL/npxntihtcTYo= + + + Headers/OMIDSDK.h + + hash2 + + +vuDNfGgJ2xCLWPC6nrrUQEQNtNSGAV3GvG66liJoI8= + + + Headers/OMIDScriptInjector.h + + hash2 + + AWsCGVUA648O5HFgAz2hJbPLe7QeS/lb75EKy14uQSc= + + + Headers/OMIDUniversalAdID.h + + hash2 + + k+lIAdbdLvdsYpsNcuXZSE28uarI9X5+uXM+XDjEVPo= + + + Headers/OMIDVASTProperties.h + + hash2 + + rGRhNvvXhz2P2iV0vV1i3O/inty3TemltWSb2MBoJss= + + + Headers/OMIDVerificationScriptResource.h + + hash2 + + hYob6SrFBbF8Ng2uRCpCo1TQ+R/S+uaToRwx7OUcDhg= + + + Headers/OMSDK.h + + hash2 + + RMvQNEJLOImLem6a8DtHWs08tFMncdsWXtF/QfYUIvQ= + + + Modules/module.modulemap + + hash2 + + bSYDPXFosRV287N0sApinZaHy+IrECKyicuVYl74Mn8= + + + PrivacyInfo.xcprivacy + + hash2 + + 5rdpDTW6MDoz1u2y0rCJB5ensp/KZWPv7EAq4o8GtfM= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h new file mode 100644 index 0000000000..15d67f737a --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h @@ -0,0 +1,50 @@ +// +// OMIDAdEvents.h +// AppVerificationLibrary +// +// Created by Daria Sukhonosova on 22/06/2017. +// + +#import +#import "OMIDAdSession.h" +#import "OMIDVASTProperties.h" + +/** + * Ad event API enabling the integration partner to signal to all verification providers when key events have occurred. + * Only one ad events implementation can be associated with the ad session and any attempt to create multiple instances will result in an error. + */ +@interface OMIDMegabraincoAdEvents : NSObject + +/** + * Initializes ad events instance associated with the supplied ad session. + * + * @param session The ad session associated with the ad events. + * @return A new ad events instance associated with the supplied ad session. Returns nil if the supplied ad session is nil or if an ad events instance has already been registered with the ad session. + */ +- (nullable instancetype)initWithAdSession:(nonnull OMIDMegabraincoAdSession *)session error:(NSError * _Nullable * _Nullable)error; + +/** + * Notifies the ad session that an impression event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * + * NOTE: the ad session will be automatically started if this method has been called first. + */ +- (BOOL)impressionOccurredWithError:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies the ad session that display loaded event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + */ +- (BOOL)loadedWithError:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies the ad session that video/audio loaded event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * @param vastProperties contains static information about the video/audio placement. + */ +- (BOOL)loadedWithVastProperties:(OMIDMegabraincoVASTProperties *_Nonnull)vastProperties + error:(NSError *_Nullable *_Nullable)error; +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h new file mode 100644 index 0000000000..e9e9c38f26 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h @@ -0,0 +1,134 @@ +// +// OMIDAdSession.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import +#import "OMIDAdSessionContext.h" +#import "OMIDAdSessionConfiguration.h" +#import "OMIDFriendlyObstructionType.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * List of supported error types. + */ +typedef NS_ENUM(NSUInteger, OMIDErrorType) { + /** + * The integration is publishing a "generic" error to verification scripts. + */ + OMIDErrorGeneric = 1, + /** + * The integration is publishing a "video" error to verification scripts. + */ + OMIDErrorMedia = 2 +}; + +/** + * Ad session API enabling the integration partner to notify OMID of key state relating to viewability calculations. + * In addition to viewability this API will also notify all verification providers of key ad session lifecycle events. + */ +@interface OMIDMegabraincoAdSession : NSObject + +/** + * The AdSession configuration is used for check owners. + */ +@property(nonatomic, readonly) OMIDMegabraincoAdSessionConfiguration *configuration; +/** + * The native view which is used for viewability tracking. + */ +@property(nonatomic, weak, nullable) UIView *mainAdView; + +/** + * Initializes new ad session supplying the context. + * + * Note that creating an OMIDAdSession sends a message to the OM SDK JS Service running in the + * webview. If the OM SDK JS Service has not loaded before the ad session is created, the + * message is lost, and the verification scripts will not receive any events. + * + * To prevent this, the implementation must wait until the webview finishes loading OM SDK + * JavaScript before creating the OMIDAdSession. The easiest way is to create the OMIDAdSession + * in a webview delegate callback (-[WKNavigationDelegate webView:didFinishNavigation:]. Alternatively, + * if an implementation can receive an HTML5 DOMContentLoaded event from the webview, it can create + * the OMIDAdSession in a message handler for that event. + * + * @param context The context that provides the required information for initialising the ad session. + * @return A new OMIDAdSession instance, or nil if the supplied context is nil. + */ +- (nullable instancetype)initWithConfiguration:(OMIDMegabraincoAdSessionConfiguration *)configuration + adSessionContext:(OMIDMegabraincoAdSessionContext *)context + error:(NSError *_Nullable *_Nullable)error; + + +/** + * Notifies all verification providers that the ad session has started and ad view tracking will begin. + * + * This method will have no affect if called after the ad session has finished. + */ +- (void)start; + +/** + * Notifies all verification providers that the ad session has finished and all ad view tracking will stop. + * + * This method will have no affect if called after the ad session has finished. + * + * Note that ending an OMID ad session sends a message to the verification scripts running inside + * the webview supplied by the integration. So that the verification scripts have enough time to + * handle the 'sessionFinish' event, the integration must maintain a strong reference to the webview + * for at least 1.0 seconds after ending the session. + */ +- (void)finish; + +/** + * Adds friendly obstruction which should then be excluded from all ad session viewability calculations. + * It also provides a purpose and detailed reason string to pass forward to the measurement vendors. + * + * This method will have no affect if called after the ad session has finished. + * + * @param friendlyObstruction The view to be excluded from all ad session viewability calculations. + * @param purpose The purpose of why this obstruction was necessary. + * @param detailedReason An explanation for why this obstruction is part of the ad experience if not already + * obvious from the purpose. Can be nil. If not nil, must be 50 characters or less and only contain characers + * `A-z`, `0-9`, or spaces. + * @return Whether this friendly obstruction was successfully added. If the session has finished or the + * friendlyObstruction has already been added for this session, this method will return NO with no associated + * error object. However, if one or more arguments are against requirements, it will return NO with an error + * object assigned. + */ +- (BOOL)addFriendlyObstruction:(UIView *)friendlyObstruction + purpose:(OMIDFriendlyObstructionType)purpose + detailedReason:(nullable NSString *)detailedReason + error:(NSError *_Nullable *_Nullable)error; + +/** + * Removes registered friendly obstruction. + * + * This method will have no affect if called after the ad session has finished. + * + * @param friendlyObstruction The view to be removed from the list of registered friendly obstructions. + */ +- (void)removeFriendlyObstruction:(UIView *)friendlyObstruction; + +/** + * Utility method to remove all registered friendly obstructions. + * + * This method will have no affect if called after the ad session has finished. + */ +- (void)removeAllFriendlyObstructions; + +/** + * Notifies the ad session that an error has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * + * @param errorType The type of error. + * @param message The message containing details of the error. + */ +- (void)logErrorWithType:(OMIDErrorType)errorType message:(NSString *)message +NS_SWIFT_NAME(logError(withType:message:)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h new file mode 100644 index 0000000000..b84824044b --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h @@ -0,0 +1,135 @@ +// +// OMIDAdSessionConfiguration.h +// AppVerificationLibrary +// +// Created by Saraev Vyacheslav on 15/09/2017. +// + +#import + +/** + * Identifies which integration layer is responsible for sending certain events. + */ +typedef NS_ENUM(NSUInteger, OMIDOwner) { + /** The integration will send the event from a JavaScript session script. */ + OMIDJavaScriptOwner = 1, + /** The integration will send the event from the native layer. */ + OMIDNativeOwner = 2, + /** The integration will not send the event. */ + OMIDNoneOwner = 3 +}; + + +/** + * List of supported creative types. + */ +typedef NS_ENUM(NSUInteger, OMIDCreativeType) { + /** + * Creative type will be set by JavaScript session script. + * Integrations must also pass `OMIDJavaScriptOwner` for `impressionOwner`. + */ + OMIDCreativeTypeDefinedByJavaScript = 1, + // Remaining values set creative type in native layer. + /** + * Rendered in webview, verification code can be inside creative or in metadata. + */ + OMIDCreativeTypeHtmlDisplay = 2, + /** + * Rendered by native, verification code provided in metadata only. + */ + OMIDCreativeTypeNativeDisplay = 3, + /** + * Rendered instream or as standalone video, verification code provided in metadata. + */ + OMIDCreativeTypeVideo = 4, + /** + * Similar to video but only contains audio media. + */ + OMIDCreativeTypeAudio = 5 +}; + +/** + * The criterion for an ad session's OMID impression event. + * Declaring an impression type makes it easier to understand discrepancies between measurers + * of the ad session, since many metrics depend on impressions. + */ +typedef NS_ENUM(NSUInteger, OMIDImpressionType) { + /** + * ImpressionType will be set by JavaScript session script. + * Integrations must also pass `OMIDJavaScriptOwner` for `impressionOwner`. + */ + OMIDImpressionTypeDefinedByJavaScript = 1, + // Remaining values set ImpressionType in native layer. + /** + * The integration is not declaring the criteria for the OMID impression. + */ + OMIDImpressionTypeUnspecified = 2, + /** + * The integration is using count-on-download criteria for the OMID impression. + */ + OMIDImpressionTypeLoaded = 3, + /** + * The integration is using begin-to-render criteria for the OMID impression. + */ + OMIDImpressionTypeBeginToRender = 4, + /** + * The integration is using one-pixel criteria (when the creative has at least 1 visible pixel on + * screen) for the OMID impression. + */ + OMIDImpressionTypeOnePixel = 5, + /** + * The integration is using viewable criteria (1 second for display, 2 seconds while playing for + * video, and at least 50% of the creative is visible) for the OMID impression. + */ + OMIDImpressionTypeViewable = 6, + /** + * The integration is using audible criteria (2 continuous second of media playback with non-zero + * volume) for the OMID impression. + */ + OMIDImpressionTypeAudible = 7, + /** + * The integration's criteria uses none of the above criteria for the OMID impression. + */ + OMIDImpressionTypeOther = 8 +}; + +/** + * The ad session configuration supplies the owner for both the impression and video events. + * The OM SDK JS service will use this information to help identify where the source of these + * events is expected to be received. + */ +@interface OMIDMegabraincoAdSessionConfiguration : NSObject + +@property OMIDCreativeType creativeType; +@property OMIDImpressionType impressionType; +@property OMIDOwner impressionOwner; +@property OMIDOwner mediaEventsOwner; +@property BOOL isolateVerificationScripts; + +/** + * Create new ad session configuration supplying the owner for both the impression and media + * events along with the type of creative being rendered/measured. + * The OM SDK JS service will use this information to help identify where the source of these + * events is expected to be received. + * @param creativeType the type of creative to be rendered in this session. + * @param impressionType the type of impression to be triggered in this session. + * @param impressionOwner whether the native or JavaScript layer should be responsible for supplying + * the impression event. + * @param mediaEventsOwner whether the native or JavaScript layer should be responsible for + * supplying media events. This needs to be set only for non-display ad sessions and can be set to + * `OMIDNoneOwner` for display. When the creativeType is `OMIDCreativeTypeDefinedByJavaScript` then + * this should be set to `OMIDJavaScriptOwner` + * @param isolateVerificationScripts determines whether verification scripts will be placed in a + * sandboxed environment. This will not have any effect for native sessions. + * @return A new session configuration instance. Returns nil and sets error if OM SDK isn't active + * or arguments are invalid. + */ +- (nullable instancetype)initWithCreativeType:(OMIDCreativeType)creativeType + impressionType:(OMIDImpressionType)impressionType + impressionOwner:(OMIDOwner)impressionOwner + mediaEventsOwner:(OMIDOwner)mediaEventsOwner + isolateVerificationScripts:(BOOL)isolateVerificationScripts + error:(NSError *_Nullable *_Nullable)error; + +@end + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h new file mode 100644 index 0000000000..10c5430b75 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h @@ -0,0 +1,126 @@ +// +// Created by Daria Sukhonosova on 19/04/16. +// + +#import + +#if !(TARGET_OS_TV) +#import +#endif + +#import "OMIDPartner.h" +#import "OMIDUniversalAdID.h" +#import "OMIDVerificationScriptResource.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Provides the ad session with details of the partner and whether to an HTML, + * JavaScript, or native session. + */ +@interface OMIDMegabraincoAdSessionContext : NSObject + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +#if !(TARGET_OS_TV) + +/** + * Initializes a new ad session context providing reference to partner and web view where + * the OM SDK JavaScript service has been injected. + * + * Calling this method will set the ad session type to `html`. + *

+ * NOTE: any attempt to create a new ad session will fail if OM SDK has not been + * activated (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param webView The WKWebView responsible for serving the ad content. The receiver holds a weak reference only. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new HTML context instance. Returns nil if OM SDK has not been activated or if + * any of the parameters are nil. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + webView:(WKWebView *)webView + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; +#endif + +/** + * Initializes a new ad session context providing reference to partner and a list of + * script resources which should be managed by OMID. + * + * Calling this method will set the ad session type to `native`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param resources The array of all verification providers who expect to receive OMID + * event data. Must contain at least one verification script. The receiver creates a + * deep copy of the array. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new native context instance. Returns nil if OMID has not been activated or if any of the parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + script:(NSString *)script + resources:(NSArray *)resources + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; + +/** + * Initializes a new ad session context providing reference to partner, an optional universalAdID and a list of + * script resources which should be managed by OMID. + * + * Calling this method will set the ad session type to `native`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param resources The array of all verification providers who expect to receive OMID + * event data. Must contain at least one verification script. The receiver creates a + * deep copy of the array. + * @param contentUrl contains the universal link to the ad's screen. + * @param universalAdID optional identifier for an ad creative. See {@link OMIDUniversalAdID} class for more information. + * @return A new native context instance. Returns nil if OMID has not been activated or if any of the required parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + script:(NSString *)script + resources:(NSArray *)resources + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + universalAdID:(nullable OMIDMegabraincoUniversalAdID *)universalAdID + error:(NSError *_Nullable *_Nullable)error; + +#if !(TARGET_OS_TV) +/** + * Initializes a new ad session context providing reference to partner and web view where + * OM SDK JavaScript service has been injected. + * + * Calling this method will set the ad session type to `javascript`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param webView The WKWebView responsible for serving the ad content. The receiver holds a weak reference only. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new JavaScript context instance. Returns nil if OM SDK has not been + * activated or if any of the parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + javaScriptWebView:(WKWebView *)webView + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; +#endif + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h new file mode 100644 index 0000000000..ee7bc6acab --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h @@ -0,0 +1,30 @@ +// +// OMIDFriendlyObstructionType.h +// AppVerificationLibrary +// +// Created by Andrew Whitcomb on 4/3/19. +// Copyright © 2019 Integral Ad Science, Inc. All rights reserved. +// + +/** + * List of allowed friendly obstruction purposes. + */ +typedef NS_ENUM(NSUInteger, OMIDFriendlyObstructionType) { + /** + * The friendly obstruction relates to interacting with a video (such as play/pause buttons). + */ + OMIDFriendlyObstructionMediaControls, + /** + * The friendly obstruction relates to closing an ad (such as a close button). + */ + OMIDFriendlyObstructionCloseAd, + /** + * The friendly obstruction is not visibly obstructing the ad but may seem so due to technical + * limitations. + */ + OMIDFriendlyObstructionNotVisible, + /** + * The friendly obstruction is obstructing for any purpose not already described. + */ + OMIDFriendlyObstructionOther +}; diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDImports.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDImports.h new file mode 100644 index 0000000000..cec6373055 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDImports.h @@ -0,0 +1,10 @@ +#import "OMIDSDK.h" +#import "OMIDScriptInjector.h" +#import "OMIDPartner.h" +#import "OMIDVerificationScriptResource.h" +#import "OMIDAdSessionContext.h" +#import "OMIDAdSession.h" +#import "OMIDAdEvents.h" +#import "OMIDVASTProperties.h" +#import "OMIDMediaEvents.h" +#import "OMIDJavaScriptSessionService.h" diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h new file mode 100644 index 0000000000..480c0e19c3 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h @@ -0,0 +1,109 @@ +#include +#if !(TARGET_OS_TV) + +#import +#import +#import "OMIDFriendlyObstructionType.h" +#import "OMIDPartner.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Service supporting ad sessions managed (started/finished) via JavaScript Session Client APIs + * by providing native-layer measurement signals. + * If the JS Session Client is running in a web view, an instance of this service must be + * initialized with the web view before starting or finishing ad sessions using JS APIs. + * Only one instance of this service may be initialized at a time for a given web view; to reuse a + * web view the current instance must be torn down (see `tearDownWithCompletion`). + */ +@interface OMIDMegabraincoJavaScriptSessionService : NSObject + +/** + * Initializes an instance of the service. + * + * @param partner Details of the integration partner responsible for ad sessions. + * @param webView The web view responsible for starting/finishing ad sessions via the JS Session + * Client. + * @param isHTMLAdView Whether the ad is rendered in HTML inside of the provided web view. + * If true, all ad sessions will be of type "html" and calling `setAdView` is + * not required. + * If false, all ad sessions will be of type "javascript" and `setAdView` must + * be called after initialization. + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + webView:(WKWebView *)webView + isHTMLAdView:(BOOL)isHTMLAdView + error:(NSError *_Nullable *_Nullable)error; + +/** + * Tears down this instance of the service. + * Calling this method will cause OM SDK to begin a teardown process including finishing all currently + * active ad sessions measured by this service instance and tearing down communication with the OM + * SDK's JavaScript layer running in the web view. + * This may require up to one second, for example in order to allow verification scripts time to process + * the `sessionFinish` event. + * Once this process has completed, the web view may be torn down or reused for another instance of + * the service without any adverse effects. If there is no need to tear down or reuse the web view, this + * method is not required. + * @param completionBlock Invoked by OM SDK after the teardown process has completed, + * or one second, whichever comes sooner. + */ +- (void)tearDownWithCompletion:(void (^)(BOOL success, NSError *_Nullable error))completionBlock; + +/** + * The native view containing the ad. + * This property is readonly and must be set using `setAdView`. + * If `isHTMLAdView` was passed as true in `initWithPartner`, this will equal + * the web view by default. + */ +@property(readonly, nonatomic, weak) UIView *adView; + +/** + * Sets the native view that contains the ad and is used for viewability tracking. + * If `isHTMLAdView` was passed as true in `initWithPartner`, this method is + * not required since the ad view will be set to the web view by default. + * @param adView The native view. + * @return Whether the ad view was successfully set. + */ +- (BOOL)setAdView:(nullable UIView *)adView + error:(NSError **)error; + +/** + * Adds a friendly obstruction which should then be excluded from all ad session viewability + * calculations. While this instance of OMIDJavaScriptSessionService is running, this friendly + * obstruction will be added to each ad session started by the integrator via the JS Session Client + * until the obstruction is removed by calling `removeFriendlyObstruction` or + * `removeAllFriendlyObstructions`. + * + * @param friendlyObstruction The view to be excluded from all ad session viewability calculations. + * @param purpose The purpose of why this obstruction was necessary. + * @param detailedReason An explanation for why this obstruction is part of the ad experience if not + * already obvious from the purpose. Can be nil. If not nil, must be 50 characters or less and only + * contain characters `A-z`, `0-9`, or spaces. + * @return Whether this friendly obstruction was successfully added. If the friendlyObstruction has + * already been added for this session, this method will return NO with no associated error object. + * However, if one or more arguments are against requirements, it will return NO with an error + * object assigned. + */ +- (BOOL)addFriendlyObstruction:(UIView *)friendlyObstruction + purpose:(OMIDFriendlyObstructionType)purpose + detailedReason:(nullable NSString *)detailedReason + error:(NSError *_Nullable *_Nullable)error; + +/** + * Removes a registered friendly obstruction from any currently running and future ad sessions + * measured by this instance of OMIDJavaScriptSessionService. + */ +- (void)removeFriendlyObstruction:(UIView *)friendlyObstruction; + +/** + * Removes all registered friendly obstructions from any currently running and future ad sessions + * measured by this instance of OMIDJavaScriptSessionService. + */ +- (void)removeAllFriendlyObstructions; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h new file mode 100644 index 0000000000..0459e0538e --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h @@ -0,0 +1,155 @@ +// +// OMIDMediaEvents.h +// AppVerificationLibrary +// +// Created by Justin Hines on 6/13/19. +// + +#import +#import "OMIDAdSession.h" +#import "OMIDVASTProperties.h" + +/** + * List of supported media event player states. + */ +typedef NS_ENUM(NSUInteger, OMIDPlayerState) { + /** + * The player is collapsed in such a way that the video is hidden. + * The video may or may not still be progressing in this state, and sound may be audible. + * This refers specifically to the video player state on the page, and not the state of + * the browser window. + */ + OMIDPlayerStateMinimized, + /** + * The player has been reduced from its original size. + * The video is still potentially visible. + */ + OMIDPlayerStateCollapsed, + /** + * The player's default playback size. + */ + OMIDPlayerStateNormal, + /** + * The player has expanded from its original size. + */ + OMIDPlayerStateExpanded, + /** + * The player has entered fullscreen mode. + */ + OMIDPlayerStateFullscreen +}; + +/** + * List of supported media event user interaction types. + */ +typedef NS_ENUM(NSUInteger, OMIDInteractionType) { + /** + * The user clicked to load the ad's landing page. + */ + OMIDInteractionTypeClick, + /** + * The user engaged with ad content to load a separate experience. + */ + OMIDInteractionTypeAcceptInvitation +}; + +/** + * This provides a complete list of native media events supported by OMID. + * Using this event API assumes the media player is fully responsible for communicating all media events at the appropriate times. + * Only one media events implementation can be associated with the ad session and any attempt to create multiple instances will result in an error. + */ +@interface OMIDMegabraincoMediaEvents : NSObject + +/** + * Initializes media events instance for the associated ad session. + * Any attempt to create a media events instance will fail if the supplied ad session has already started. + * + * @param session The ad session associated with the ad events. + * @return A new media events instance. Returns nil if the supplied ad session is nil or if a media events instance has already been registered with the ad session or if a media events instance has been created after the ad session has started. + * @see OMIDAdSession + */ +- (nullable instancetype)initWithAdSession:(nonnull OMIDMegabraincoAdSession *)session error:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies all media listeners that media content has started playing. + * + * @param duration The duration of the selected media (in seconds). + * @param mediaPlayerVolume The volume from the native media player with a range between 0 and 1. + */ +- (void)startWithDuration:(CGFloat)duration + mediaPlayerVolume:(CGFloat)mediaPlayerVolume; + +/** + * Notifies all media listeners that media playback has reached the first quartile. + */ +- (void)firstQuartile; + +/** + * Notifies all media listeners that media playback has reached the midpoint. + */ +- (void)midpoint; + +/** + * Notifies all media listeners that media playback has reached the third quartile. + */ +- (void)thirdQuartile; + +/** + * Notifies all media listeners that media playback is complete. + */ +- (void)complete; + +/** + * Notifies all media listeners that media playback has paused after a user interaction. + */ +- (void)pause; + +/** + * Notifies all media listeners that media playback has resumed after being paused. + */ +- (void)resume; + +/** + * Notifies all media listeners that media playback has stopped as a user skip interaction. + * Once skipped, it should not be possible for the media to resume playing content. + */ +- (void)skipped; + +/** + * Notifies all media listeners that media playback has stopped and started buffering. + */ +- (void)bufferStart; + +/** + * Notifies all media listeners that buffering has finished and media playback has resumed. + */ +- (void)bufferFinish; + +/** + * Notifies all media listeners that the media player volume has changed. + * + * @param playerVolume The volume from the native media player with a range between 0 and 1. + */ +- (void)volumeChangeTo:(CGFloat)playerVolume; + +/** + * Notifies all media listeners that media player state has changed. + * See `OMIDPlayerState` for list of supported states. + * + * @param playerState The latest media player state. + * @see OMIDPlayerState + */ +- (void)playerStateChangeTo:(OMIDPlayerState)playerState; + +/** + * Notifies all media listeners that the user has performed an ad interaction. + * See `OMIDInteractionType` for a list of supported types. + * + * @param interactionType The latest user integration. + * @see OMIDInteractionType + */ +- (void)adUserInteractionWithType:(OMIDInteractionType)interactionType +NS_SWIFT_NAME(adUserInteraction(withType:)); + +@end + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h new file mode 100644 index 0000000000..13aebbad1b --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h @@ -0,0 +1,32 @@ +// +// OMIDPartner.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import + +/** + * Details about the integration partner which will be supplied to the ad session. + */ +@interface OMIDMegabraincoPartner : NSObject + +@property(nonatomic, readonly, nonnull) NSString *name; +@property(nonatomic, readonly, nonnull) NSString *versionString; + +/** + * Initializes new partner instance providing both name and versionString. + * + * Both name and version are mandatory. + * + * @param name It is used to uniquely identify the integration partner. + * @param versionString It is used to uniquely identify the integration partner. + * @return A new partner instance, or nil if any of the parameters are either null or blank + */ +- (nullable instancetype)initWithName:(nonnull NSString *)name + versionString:(nonnull NSString *)versionString; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h new file mode 100644 index 0000000000..2bdf6979cb --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h @@ -0,0 +1,58 @@ +// +// OMIDSDK.h +// AppVerificationLibrary +// +// Created by Daria on 05/06/2017. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * This application level class will be called by all integration partners to ensure OM SDK has been activated before calling any other API methods. + * Any attempt to use other API methods prior to activation will result in an error. + * + * Note that OM SDK may only be used on the main UI thread. + * Make sure you are on the main thread when you initialize the SDK, create its + * objects, and invoke its methods. + */ +@interface OMIDMegabraincoSDK : NSObject + +/** + * The current semantic version of the integrated OMID library. + */ ++ (NSString *)versionString; + +/** + * Shared OMIDSDK instance. + */ +@property(class, readonly) OMIDMegabraincoSDK *sharedInstance +NS_SWIFT_NAME(shared); + +/** + * A Boolean value indicating whether OM SDK has been activated. + * + * @discussion Check that OM SDK is active prior to creating any ad sessions. + */ +@property(atomic, readonly, getter=isActive) BOOL active; + +/** + * Activate OM SDK before calling other API methods. + * + * @discussion Activation sets up the OM SDK environment. In CTV apps (running tvOS), `activate` should be called on launch in + * order to capture a "last activity" timestamp on launch and each time the user foregrounds the app). + * + * @return Boolean indicating success. + */ +- (BOOL)activate; + +/** + * Update the last activity time + * After activating OM SDK in CTV apps, refresh the "last activity" timestamp in response to user input prior to starting an ad session. + */ +- (void)updateLastActivity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h new file mode 100644 index 0000000000..f56d7c2fd1 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h @@ -0,0 +1,26 @@ +// +// OMIDScriptInjector.h +// AppVerificationLibrary +// +// Created by Daria on 21/06/2017. +// + +#import + +/** + * Utility class which enables integration partners to use a standard approach for injecting OM SDK JS into the served tag HTML content. + */ +@interface OMIDMegabraincoScriptInjector : NSObject + +/* + Injects the downloaded OMID JS content into the served HTML. + @param scriptContent containing the OMID JS service content to be injected into the hidden tracking web view. + @param html of the tag content which should be modified to include the downloaded OMID JS content. + @param error If an error occurs, contains an NSError object. + @return modified HTML including OMID JS or nil if an error occurs. + */ ++ (nullable NSString *)injectScriptContent:(nonnull NSString *)scriptContent + intoHTML:(nonnull NSString *)html + error:(NSError *_Nullable *_Nullable)error; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h new file mode 100644 index 0000000000..c704f6b218 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h @@ -0,0 +1,40 @@ +// +// OMIDUniversalAdID.h +// AppVerificationLibrary +// +// Created by Teodor Cristea on 31.03.2025. +// Copyright © 2025 IAB Techlab. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Details about the UniversalAdID for the purpose of tracking ad creatives which will be supplied to the ad session. + */ +@interface OMIDMegabraincoUniversalAdID : NSObject + +@property(nonatomic, readonly, nonnull) NSString *value; +@property(nonatomic, readonly, nonnull) NSString *idRegistry; + +/** + * Initializes new UniversalAdID instance providing both value and idRegistry. + * The UniversalAdID's purpose is to identify an ad creative across different platforms throughout the lifecycle of an advertising campaign. + * + * Both value and idRegistry are mandatory. + * + * @param value It is used to identify the unique creative identifier. + * @param idRegistry It is used to identify the URL for the registry website where the unique creative ID is cataloged. + * @return A new UniversalAdID instance, or nil if any of the parameters are either null or blank + */ +- (nullable instancetype)initWithValue:(nonnull NSString *)value + idRegistry:(nonnull NSString *)idRegistry + error:(NSError *_Nullable *_Nullable)error; + ++ (instancetype)new NS_UNAVAILABLE; +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h new file mode 100644 index 0000000000..4963ce4014 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h @@ -0,0 +1,71 @@ +// +// OMIDVASTProperties.h +// AppVerificationLibrary +// +// Created by Daria Sukhonosova on 30/06/2017. +// + +#import + +/** + * List of supported media player positions. + */ +typedef NS_ENUM(NSUInteger, OMIDPosition) { + /** + * The ad plays preceding video content. + */ + OMIDPositionPreroll, + /** + * The ad plays in the middle of video content, or between two separate content videos. + */ + OMIDPositionMidroll, + /** + * The ad plays following video content. + */ + OMIDPositionPostroll, + /** + * The ad plays independently of any video content. + */ + OMIDPositionStandalone +}; + +/** + * This object is used to capture key VAST properties so this can be shared with all registered verification providers. + */ +@interface OMIDMegabraincoVASTProperties : NSObject + +@property(nonatomic, readonly, getter = isSkippable) BOOL skippable; +@property(nonatomic, readonly) CGFloat skipOffset; +@property(nonatomic, readonly, getter = isAutoPlay) BOOL autoPlay; +@property(nonatomic, readonly) OMIDPosition position; + +/** + * This method enables the media player to create a new VAST properties instance for skippable media ad placement. + * + * @param skipOffset The number of seconds before the skip button is presented. + * @param autoPlay Determines whether the media will auto-play content. + * @param position The position of the media in relation to other content. + * @return A new instance of VAST properties. + */ +- (nonnull instancetype)initWithSkipOffset:(CGFloat)skipOffset + autoPlay:(BOOL)autoPlay + position:(OMIDPosition)position; + +/** + * This method enables the media player to create a new VAST properties instance for non-skippable media ad placement. + * + * @param autoPlay Determines whether the media will auto-play content. + * @param position The position of the media in relation to other content. + * @return A new instance of VAST properties. + */ +- (nonnull instancetype)initWithAutoPlay:(BOOL)autoPlay + position:(OMIDPosition)position; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +/** + * For OM SDK internal use only. + */ +- (NSDictionary *_Nonnull)toJSON; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h new file mode 100644 index 0000000000..7e27ceb4fc --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h @@ -0,0 +1,45 @@ +// +// OMIDVerificationScriptResource.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import + +/** + * Details about the verification provider which will be supplied to the ad session. + */ +@interface OMIDMegabraincoVerificationScriptResource : NSObject + +@property(nonatomic, readonly, nonnull) NSURL *URL; +@property(nonatomic, readonly, nullable) NSString *vendorKey; +@property(nonatomic, readonly, nullable) NSString *parameters; + +/** + * Initializes new verification script resource instance which requires vendor specific verification parameters. + * + * When calling this method all arguments are mandatory. + * + * @param vendorKey It is used to uniquely identify the verification provider. + * @param URL The URL to be injected into the OMID managed JavaScript execution environment. + * @param parameters The parameters which the verification provider script is expecting for the ad session. + * @return A new verification script resource instance, or nil if any of the parameters are either null or blank. + */ +- (nullable instancetype)initWithURL:(nonnull NSURL *)URL + vendorKey:(nonnull NSString *)vendorKey + parameters:(nonnull NSString *)parameters; + +/** + * Initializes new verification script resource instance which does not require any vendor specific verification parameters. + * + * When calling this method all arguments are mandatory. + * + * @param URL The URL to be injected into the OMID managed JavaScript execution environment. + * @return A new verification script resource instance, or nil if URL is nil or blank. + */ +- (nullable instancetype)initWithURL:(nonnull NSURL *)URL; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMSDK.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMSDK.h new file mode 100644 index 0000000000..bc3714adb7 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Headers/OMSDK.h @@ -0,0 +1,18 @@ +// +// OMSDK.h +// OMSDK +// +// Created by Nathanael Hardy on 10/16/20. +// + +#import + +//! Project version number for OMSDK. +FOUNDATION_EXPORT double OMSDKVersionNumber; + +//! Project version string for OMSDK. +FOUNDATION_EXPORT const unsigned char OMSDKVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Info.plist b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Info.plist new file mode 100644 index 0000000000..7330f55bbb Binary files /dev/null and b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Info.plist differ diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Modules/module.modulemap b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Modules/module.modulemap new file mode 100644 index 0000000000..68be4ac04a --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +module OMSDK_Megabrainco { + header "Headers/OMIDImports.h" + export * +} diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/OMSDK_Megabrainco b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/OMSDK_Megabrainco new file mode 100755 index 0000000000..18ffc6f95c Binary files /dev/null and b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/OMSDK_Megabrainco differ diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..5ab7e387bd --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,42 @@ + + + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeProductInteraction + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeAdvertisingData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h new file mode 100644 index 0000000000..15d67f737a --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdEvents.h @@ -0,0 +1,50 @@ +// +// OMIDAdEvents.h +// AppVerificationLibrary +// +// Created by Daria Sukhonosova on 22/06/2017. +// + +#import +#import "OMIDAdSession.h" +#import "OMIDVASTProperties.h" + +/** + * Ad event API enabling the integration partner to signal to all verification providers when key events have occurred. + * Only one ad events implementation can be associated with the ad session and any attempt to create multiple instances will result in an error. + */ +@interface OMIDMegabraincoAdEvents : NSObject + +/** + * Initializes ad events instance associated with the supplied ad session. + * + * @param session The ad session associated with the ad events. + * @return A new ad events instance associated with the supplied ad session. Returns nil if the supplied ad session is nil or if an ad events instance has already been registered with the ad session. + */ +- (nullable instancetype)initWithAdSession:(nonnull OMIDMegabraincoAdSession *)session error:(NSError * _Nullable * _Nullable)error; + +/** + * Notifies the ad session that an impression event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * + * NOTE: the ad session will be automatically started if this method has been called first. + */ +- (BOOL)impressionOccurredWithError:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies the ad session that display loaded event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + */ +- (BOOL)loadedWithError:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies the ad session that video/audio loaded event has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * @param vastProperties contains static information about the video/audio placement. + */ +- (BOOL)loadedWithVastProperties:(OMIDMegabraincoVASTProperties *_Nonnull)vastProperties + error:(NSError *_Nullable *_Nullable)error; +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h new file mode 100644 index 0000000000..e9e9c38f26 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSession.h @@ -0,0 +1,134 @@ +// +// OMIDAdSession.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import +#import "OMIDAdSessionContext.h" +#import "OMIDAdSessionConfiguration.h" +#import "OMIDFriendlyObstructionType.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * List of supported error types. + */ +typedef NS_ENUM(NSUInteger, OMIDErrorType) { + /** + * The integration is publishing a "generic" error to verification scripts. + */ + OMIDErrorGeneric = 1, + /** + * The integration is publishing a "video" error to verification scripts. + */ + OMIDErrorMedia = 2 +}; + +/** + * Ad session API enabling the integration partner to notify OMID of key state relating to viewability calculations. + * In addition to viewability this API will also notify all verification providers of key ad session lifecycle events. + */ +@interface OMIDMegabraincoAdSession : NSObject + +/** + * The AdSession configuration is used for check owners. + */ +@property(nonatomic, readonly) OMIDMegabraincoAdSessionConfiguration *configuration; +/** + * The native view which is used for viewability tracking. + */ +@property(nonatomic, weak, nullable) UIView *mainAdView; + +/** + * Initializes new ad session supplying the context. + * + * Note that creating an OMIDAdSession sends a message to the OM SDK JS Service running in the + * webview. If the OM SDK JS Service has not loaded before the ad session is created, the + * message is lost, and the verification scripts will not receive any events. + * + * To prevent this, the implementation must wait until the webview finishes loading OM SDK + * JavaScript before creating the OMIDAdSession. The easiest way is to create the OMIDAdSession + * in a webview delegate callback (-[WKNavigationDelegate webView:didFinishNavigation:]. Alternatively, + * if an implementation can receive an HTML5 DOMContentLoaded event from the webview, it can create + * the OMIDAdSession in a message handler for that event. + * + * @param context The context that provides the required information for initialising the ad session. + * @return A new OMIDAdSession instance, or nil if the supplied context is nil. + */ +- (nullable instancetype)initWithConfiguration:(OMIDMegabraincoAdSessionConfiguration *)configuration + adSessionContext:(OMIDMegabraincoAdSessionContext *)context + error:(NSError *_Nullable *_Nullable)error; + + +/** + * Notifies all verification providers that the ad session has started and ad view tracking will begin. + * + * This method will have no affect if called after the ad session has finished. + */ +- (void)start; + +/** + * Notifies all verification providers that the ad session has finished and all ad view tracking will stop. + * + * This method will have no affect if called after the ad session has finished. + * + * Note that ending an OMID ad session sends a message to the verification scripts running inside + * the webview supplied by the integration. So that the verification scripts have enough time to + * handle the 'sessionFinish' event, the integration must maintain a strong reference to the webview + * for at least 1.0 seconds after ending the session. + */ +- (void)finish; + +/** + * Adds friendly obstruction which should then be excluded from all ad session viewability calculations. + * It also provides a purpose and detailed reason string to pass forward to the measurement vendors. + * + * This method will have no affect if called after the ad session has finished. + * + * @param friendlyObstruction The view to be excluded from all ad session viewability calculations. + * @param purpose The purpose of why this obstruction was necessary. + * @param detailedReason An explanation for why this obstruction is part of the ad experience if not already + * obvious from the purpose. Can be nil. If not nil, must be 50 characters or less and only contain characers + * `A-z`, `0-9`, or spaces. + * @return Whether this friendly obstruction was successfully added. If the session has finished or the + * friendlyObstruction has already been added for this session, this method will return NO with no associated + * error object. However, if one or more arguments are against requirements, it will return NO with an error + * object assigned. + */ +- (BOOL)addFriendlyObstruction:(UIView *)friendlyObstruction + purpose:(OMIDFriendlyObstructionType)purpose + detailedReason:(nullable NSString *)detailedReason + error:(NSError *_Nullable *_Nullable)error; + +/** + * Removes registered friendly obstruction. + * + * This method will have no affect if called after the ad session has finished. + * + * @param friendlyObstruction The view to be removed from the list of registered friendly obstructions. + */ +- (void)removeFriendlyObstruction:(UIView *)friendlyObstruction; + +/** + * Utility method to remove all registered friendly obstructions. + * + * This method will have no affect if called after the ad session has finished. + */ +- (void)removeAllFriendlyObstructions; + +/** + * Notifies the ad session that an error has occurred. + * + * When triggered all registered verification providers will be notified of this event. + * + * @param errorType The type of error. + * @param message The message containing details of the error. + */ +- (void)logErrorWithType:(OMIDErrorType)errorType message:(NSString *)message +NS_SWIFT_NAME(logError(withType:message:)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h new file mode 100644 index 0000000000..b84824044b --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionConfiguration.h @@ -0,0 +1,135 @@ +// +// OMIDAdSessionConfiguration.h +// AppVerificationLibrary +// +// Created by Saraev Vyacheslav on 15/09/2017. +// + +#import + +/** + * Identifies which integration layer is responsible for sending certain events. + */ +typedef NS_ENUM(NSUInteger, OMIDOwner) { + /** The integration will send the event from a JavaScript session script. */ + OMIDJavaScriptOwner = 1, + /** The integration will send the event from the native layer. */ + OMIDNativeOwner = 2, + /** The integration will not send the event. */ + OMIDNoneOwner = 3 +}; + + +/** + * List of supported creative types. + */ +typedef NS_ENUM(NSUInteger, OMIDCreativeType) { + /** + * Creative type will be set by JavaScript session script. + * Integrations must also pass `OMIDJavaScriptOwner` for `impressionOwner`. + */ + OMIDCreativeTypeDefinedByJavaScript = 1, + // Remaining values set creative type in native layer. + /** + * Rendered in webview, verification code can be inside creative or in metadata. + */ + OMIDCreativeTypeHtmlDisplay = 2, + /** + * Rendered by native, verification code provided in metadata only. + */ + OMIDCreativeTypeNativeDisplay = 3, + /** + * Rendered instream or as standalone video, verification code provided in metadata. + */ + OMIDCreativeTypeVideo = 4, + /** + * Similar to video but only contains audio media. + */ + OMIDCreativeTypeAudio = 5 +}; + +/** + * The criterion for an ad session's OMID impression event. + * Declaring an impression type makes it easier to understand discrepancies between measurers + * of the ad session, since many metrics depend on impressions. + */ +typedef NS_ENUM(NSUInteger, OMIDImpressionType) { + /** + * ImpressionType will be set by JavaScript session script. + * Integrations must also pass `OMIDJavaScriptOwner` for `impressionOwner`. + */ + OMIDImpressionTypeDefinedByJavaScript = 1, + // Remaining values set ImpressionType in native layer. + /** + * The integration is not declaring the criteria for the OMID impression. + */ + OMIDImpressionTypeUnspecified = 2, + /** + * The integration is using count-on-download criteria for the OMID impression. + */ + OMIDImpressionTypeLoaded = 3, + /** + * The integration is using begin-to-render criteria for the OMID impression. + */ + OMIDImpressionTypeBeginToRender = 4, + /** + * The integration is using one-pixel criteria (when the creative has at least 1 visible pixel on + * screen) for the OMID impression. + */ + OMIDImpressionTypeOnePixel = 5, + /** + * The integration is using viewable criteria (1 second for display, 2 seconds while playing for + * video, and at least 50% of the creative is visible) for the OMID impression. + */ + OMIDImpressionTypeViewable = 6, + /** + * The integration is using audible criteria (2 continuous second of media playback with non-zero + * volume) for the OMID impression. + */ + OMIDImpressionTypeAudible = 7, + /** + * The integration's criteria uses none of the above criteria for the OMID impression. + */ + OMIDImpressionTypeOther = 8 +}; + +/** + * The ad session configuration supplies the owner for both the impression and video events. + * The OM SDK JS service will use this information to help identify where the source of these + * events is expected to be received. + */ +@interface OMIDMegabraincoAdSessionConfiguration : NSObject + +@property OMIDCreativeType creativeType; +@property OMIDImpressionType impressionType; +@property OMIDOwner impressionOwner; +@property OMIDOwner mediaEventsOwner; +@property BOOL isolateVerificationScripts; + +/** + * Create new ad session configuration supplying the owner for both the impression and media + * events along with the type of creative being rendered/measured. + * The OM SDK JS service will use this information to help identify where the source of these + * events is expected to be received. + * @param creativeType the type of creative to be rendered in this session. + * @param impressionType the type of impression to be triggered in this session. + * @param impressionOwner whether the native or JavaScript layer should be responsible for supplying + * the impression event. + * @param mediaEventsOwner whether the native or JavaScript layer should be responsible for + * supplying media events. This needs to be set only for non-display ad sessions and can be set to + * `OMIDNoneOwner` for display. When the creativeType is `OMIDCreativeTypeDefinedByJavaScript` then + * this should be set to `OMIDJavaScriptOwner` + * @param isolateVerificationScripts determines whether verification scripts will be placed in a + * sandboxed environment. This will not have any effect for native sessions. + * @return A new session configuration instance. Returns nil and sets error if OM SDK isn't active + * or arguments are invalid. + */ +- (nullable instancetype)initWithCreativeType:(OMIDCreativeType)creativeType + impressionType:(OMIDImpressionType)impressionType + impressionOwner:(OMIDOwner)impressionOwner + mediaEventsOwner:(OMIDOwner)mediaEventsOwner + isolateVerificationScripts:(BOOL)isolateVerificationScripts + error:(NSError *_Nullable *_Nullable)error; + +@end + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h new file mode 100644 index 0000000000..10c5430b75 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDAdSessionContext.h @@ -0,0 +1,126 @@ +// +// Created by Daria Sukhonosova on 19/04/16. +// + +#import + +#if !(TARGET_OS_TV) +#import +#endif + +#import "OMIDPartner.h" +#import "OMIDUniversalAdID.h" +#import "OMIDVerificationScriptResource.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Provides the ad session with details of the partner and whether to an HTML, + * JavaScript, or native session. + */ +@interface OMIDMegabraincoAdSessionContext : NSObject + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +#if !(TARGET_OS_TV) + +/** + * Initializes a new ad session context providing reference to partner and web view where + * the OM SDK JavaScript service has been injected. + * + * Calling this method will set the ad session type to `html`. + *

+ * NOTE: any attempt to create a new ad session will fail if OM SDK has not been + * activated (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param webView The WKWebView responsible for serving the ad content. The receiver holds a weak reference only. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new HTML context instance. Returns nil if OM SDK has not been activated or if + * any of the parameters are nil. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + webView:(WKWebView *)webView + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; +#endif + +/** + * Initializes a new ad session context providing reference to partner and a list of + * script resources which should be managed by OMID. + * + * Calling this method will set the ad session type to `native`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param resources The array of all verification providers who expect to receive OMID + * event data. Must contain at least one verification script. The receiver creates a + * deep copy of the array. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new native context instance. Returns nil if OMID has not been activated or if any of the parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + script:(NSString *)script + resources:(NSArray *)resources + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; + +/** + * Initializes a new ad session context providing reference to partner, an optional universalAdID and a list of + * script resources which should be managed by OMID. + * + * Calling this method will set the ad session type to `native`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param resources The array of all verification providers who expect to receive OMID + * event data. Must contain at least one verification script. The receiver creates a + * deep copy of the array. + * @param contentUrl contains the universal link to the ad's screen. + * @param universalAdID optional identifier for an ad creative. See {@link OMIDUniversalAdID} class for more information. + * @return A new native context instance. Returns nil if OMID has not been activated or if any of the required parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + script:(NSString *)script + resources:(NSArray *)resources + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + universalAdID:(nullable OMIDMegabraincoUniversalAdID *)universalAdID + error:(NSError *_Nullable *_Nullable)error; + +#if !(TARGET_OS_TV) +/** + * Initializes a new ad session context providing reference to partner and web view where + * OM SDK JavaScript service has been injected. + * + * Calling this method will set the ad session type to `javascript`. + *

+ * NOTE: any attempt to create a new ad session will fail if OMID has not been activated + * (see {@link OMIDSDK} class for more information). + * + * @param partner Details of the integration partner responsible for the ad session. + * @param webView The WKWebView responsible for serving the ad content. The receiver holds a weak reference only. + * @param contentUrl contains the universal link to the ad's screen. + * @return A new JavaScript context instance. Returns nil if OM SDK has not been + * activated or if any of the parameters are invalid. + * @see OMIDSDK + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + javaScriptWebView:(WKWebView *)webView + contentUrl:(nullable NSString *)contentUrl + customReferenceIdentifier:(nullable NSString *)customReferenceIdentifier + error:(NSError *_Nullable *_Nullable)error; +#endif + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h new file mode 100644 index 0000000000..ee7bc6acab --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDFriendlyObstructionType.h @@ -0,0 +1,30 @@ +// +// OMIDFriendlyObstructionType.h +// AppVerificationLibrary +// +// Created by Andrew Whitcomb on 4/3/19. +// Copyright © 2019 Integral Ad Science, Inc. All rights reserved. +// + +/** + * List of allowed friendly obstruction purposes. + */ +typedef NS_ENUM(NSUInteger, OMIDFriendlyObstructionType) { + /** + * The friendly obstruction relates to interacting with a video (such as play/pause buttons). + */ + OMIDFriendlyObstructionMediaControls, + /** + * The friendly obstruction relates to closing an ad (such as a close button). + */ + OMIDFriendlyObstructionCloseAd, + /** + * The friendly obstruction is not visibly obstructing the ad but may seem so due to technical + * limitations. + */ + OMIDFriendlyObstructionNotVisible, + /** + * The friendly obstruction is obstructing for any purpose not already described. + */ + OMIDFriendlyObstructionOther +}; diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDImports.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDImports.h new file mode 100644 index 0000000000..cec6373055 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDImports.h @@ -0,0 +1,10 @@ +#import "OMIDSDK.h" +#import "OMIDScriptInjector.h" +#import "OMIDPartner.h" +#import "OMIDVerificationScriptResource.h" +#import "OMIDAdSessionContext.h" +#import "OMIDAdSession.h" +#import "OMIDAdEvents.h" +#import "OMIDVASTProperties.h" +#import "OMIDMediaEvents.h" +#import "OMIDJavaScriptSessionService.h" diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h new file mode 100644 index 0000000000..480c0e19c3 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDJavaScriptSessionService.h @@ -0,0 +1,109 @@ +#include +#if !(TARGET_OS_TV) + +#import +#import +#import "OMIDFriendlyObstructionType.h" +#import "OMIDPartner.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Service supporting ad sessions managed (started/finished) via JavaScript Session Client APIs + * by providing native-layer measurement signals. + * If the JS Session Client is running in a web view, an instance of this service must be + * initialized with the web view before starting or finishing ad sessions using JS APIs. + * Only one instance of this service may be initialized at a time for a given web view; to reuse a + * web view the current instance must be torn down (see `tearDownWithCompletion`). + */ +@interface OMIDMegabraincoJavaScriptSessionService : NSObject + +/** + * Initializes an instance of the service. + * + * @param partner Details of the integration partner responsible for ad sessions. + * @param webView The web view responsible for starting/finishing ad sessions via the JS Session + * Client. + * @param isHTMLAdView Whether the ad is rendered in HTML inside of the provided web view. + * If true, all ad sessions will be of type "html" and calling `setAdView` is + * not required. + * If false, all ad sessions will be of type "javascript" and `setAdView` must + * be called after initialization. + */ +- (nullable instancetype)initWithPartner:(OMIDMegabraincoPartner *)partner + webView:(WKWebView *)webView + isHTMLAdView:(BOOL)isHTMLAdView + error:(NSError *_Nullable *_Nullable)error; + +/** + * Tears down this instance of the service. + * Calling this method will cause OM SDK to begin a teardown process including finishing all currently + * active ad sessions measured by this service instance and tearing down communication with the OM + * SDK's JavaScript layer running in the web view. + * This may require up to one second, for example in order to allow verification scripts time to process + * the `sessionFinish` event. + * Once this process has completed, the web view may be torn down or reused for another instance of + * the service without any adverse effects. If there is no need to tear down or reuse the web view, this + * method is not required. + * @param completionBlock Invoked by OM SDK after the teardown process has completed, + * or one second, whichever comes sooner. + */ +- (void)tearDownWithCompletion:(void (^)(BOOL success, NSError *_Nullable error))completionBlock; + +/** + * The native view containing the ad. + * This property is readonly and must be set using `setAdView`. + * If `isHTMLAdView` was passed as true in `initWithPartner`, this will equal + * the web view by default. + */ +@property(readonly, nonatomic, weak) UIView *adView; + +/** + * Sets the native view that contains the ad and is used for viewability tracking. + * If `isHTMLAdView` was passed as true in `initWithPartner`, this method is + * not required since the ad view will be set to the web view by default. + * @param adView The native view. + * @return Whether the ad view was successfully set. + */ +- (BOOL)setAdView:(nullable UIView *)adView + error:(NSError **)error; + +/** + * Adds a friendly obstruction which should then be excluded from all ad session viewability + * calculations. While this instance of OMIDJavaScriptSessionService is running, this friendly + * obstruction will be added to each ad session started by the integrator via the JS Session Client + * until the obstruction is removed by calling `removeFriendlyObstruction` or + * `removeAllFriendlyObstructions`. + * + * @param friendlyObstruction The view to be excluded from all ad session viewability calculations. + * @param purpose The purpose of why this obstruction was necessary. + * @param detailedReason An explanation for why this obstruction is part of the ad experience if not + * already obvious from the purpose. Can be nil. If not nil, must be 50 characters or less and only + * contain characters `A-z`, `0-9`, or spaces. + * @return Whether this friendly obstruction was successfully added. If the friendlyObstruction has + * already been added for this session, this method will return NO with no associated error object. + * However, if one or more arguments are against requirements, it will return NO with an error + * object assigned. + */ +- (BOOL)addFriendlyObstruction:(UIView *)friendlyObstruction + purpose:(OMIDFriendlyObstructionType)purpose + detailedReason:(nullable NSString *)detailedReason + error:(NSError *_Nullable *_Nullable)error; + +/** + * Removes a registered friendly obstruction from any currently running and future ad sessions + * measured by this instance of OMIDJavaScriptSessionService. + */ +- (void)removeFriendlyObstruction:(UIView *)friendlyObstruction; + +/** + * Removes all registered friendly obstructions from any currently running and future ad sessions + * measured by this instance of OMIDJavaScriptSessionService. + */ +- (void)removeAllFriendlyObstructions; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h new file mode 100644 index 0000000000..0459e0538e --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDMediaEvents.h @@ -0,0 +1,155 @@ +// +// OMIDMediaEvents.h +// AppVerificationLibrary +// +// Created by Justin Hines on 6/13/19. +// + +#import +#import "OMIDAdSession.h" +#import "OMIDVASTProperties.h" + +/** + * List of supported media event player states. + */ +typedef NS_ENUM(NSUInteger, OMIDPlayerState) { + /** + * The player is collapsed in such a way that the video is hidden. + * The video may or may not still be progressing in this state, and sound may be audible. + * This refers specifically to the video player state on the page, and not the state of + * the browser window. + */ + OMIDPlayerStateMinimized, + /** + * The player has been reduced from its original size. + * The video is still potentially visible. + */ + OMIDPlayerStateCollapsed, + /** + * The player's default playback size. + */ + OMIDPlayerStateNormal, + /** + * The player has expanded from its original size. + */ + OMIDPlayerStateExpanded, + /** + * The player has entered fullscreen mode. + */ + OMIDPlayerStateFullscreen +}; + +/** + * List of supported media event user interaction types. + */ +typedef NS_ENUM(NSUInteger, OMIDInteractionType) { + /** + * The user clicked to load the ad's landing page. + */ + OMIDInteractionTypeClick, + /** + * The user engaged with ad content to load a separate experience. + */ + OMIDInteractionTypeAcceptInvitation +}; + +/** + * This provides a complete list of native media events supported by OMID. + * Using this event API assumes the media player is fully responsible for communicating all media events at the appropriate times. + * Only one media events implementation can be associated with the ad session and any attempt to create multiple instances will result in an error. + */ +@interface OMIDMegabraincoMediaEvents : NSObject + +/** + * Initializes media events instance for the associated ad session. + * Any attempt to create a media events instance will fail if the supplied ad session has already started. + * + * @param session The ad session associated with the ad events. + * @return A new media events instance. Returns nil if the supplied ad session is nil or if a media events instance has already been registered with the ad session or if a media events instance has been created after the ad session has started. + * @see OMIDAdSession + */ +- (nullable instancetype)initWithAdSession:(nonnull OMIDMegabraincoAdSession *)session error:(NSError *_Nullable *_Nullable)error; + +/** + * Notifies all media listeners that media content has started playing. + * + * @param duration The duration of the selected media (in seconds). + * @param mediaPlayerVolume The volume from the native media player with a range between 0 and 1. + */ +- (void)startWithDuration:(CGFloat)duration + mediaPlayerVolume:(CGFloat)mediaPlayerVolume; + +/** + * Notifies all media listeners that media playback has reached the first quartile. + */ +- (void)firstQuartile; + +/** + * Notifies all media listeners that media playback has reached the midpoint. + */ +- (void)midpoint; + +/** + * Notifies all media listeners that media playback has reached the third quartile. + */ +- (void)thirdQuartile; + +/** + * Notifies all media listeners that media playback is complete. + */ +- (void)complete; + +/** + * Notifies all media listeners that media playback has paused after a user interaction. + */ +- (void)pause; + +/** + * Notifies all media listeners that media playback has resumed after being paused. + */ +- (void)resume; + +/** + * Notifies all media listeners that media playback has stopped as a user skip interaction. + * Once skipped, it should not be possible for the media to resume playing content. + */ +- (void)skipped; + +/** + * Notifies all media listeners that media playback has stopped and started buffering. + */ +- (void)bufferStart; + +/** + * Notifies all media listeners that buffering has finished and media playback has resumed. + */ +- (void)bufferFinish; + +/** + * Notifies all media listeners that the media player volume has changed. + * + * @param playerVolume The volume from the native media player with a range between 0 and 1. + */ +- (void)volumeChangeTo:(CGFloat)playerVolume; + +/** + * Notifies all media listeners that media player state has changed. + * See `OMIDPlayerState` for list of supported states. + * + * @param playerState The latest media player state. + * @see OMIDPlayerState + */ +- (void)playerStateChangeTo:(OMIDPlayerState)playerState; + +/** + * Notifies all media listeners that the user has performed an ad interaction. + * See `OMIDInteractionType` for a list of supported types. + * + * @param interactionType The latest user integration. + * @see OMIDInteractionType + */ +- (void)adUserInteractionWithType:(OMIDInteractionType)interactionType +NS_SWIFT_NAME(adUserInteraction(withType:)); + +@end + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h new file mode 100644 index 0000000000..13aebbad1b --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDPartner.h @@ -0,0 +1,32 @@ +// +// OMIDPartner.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import + +/** + * Details about the integration partner which will be supplied to the ad session. + */ +@interface OMIDMegabraincoPartner : NSObject + +@property(nonatomic, readonly, nonnull) NSString *name; +@property(nonatomic, readonly, nonnull) NSString *versionString; + +/** + * Initializes new partner instance providing both name and versionString. + * + * Both name and version are mandatory. + * + * @param name It is used to uniquely identify the integration partner. + * @param versionString It is used to uniquely identify the integration partner. + * @return A new partner instance, or nil if any of the parameters are either null or blank + */ +- (nullable instancetype)initWithName:(nonnull NSString *)name + versionString:(nonnull NSString *)versionString; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h new file mode 100644 index 0000000000..2bdf6979cb --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDSDK.h @@ -0,0 +1,58 @@ +// +// OMIDSDK.h +// AppVerificationLibrary +// +// Created by Daria on 05/06/2017. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * This application level class will be called by all integration partners to ensure OM SDK has been activated before calling any other API methods. + * Any attempt to use other API methods prior to activation will result in an error. + * + * Note that OM SDK may only be used on the main UI thread. + * Make sure you are on the main thread when you initialize the SDK, create its + * objects, and invoke its methods. + */ +@interface OMIDMegabraincoSDK : NSObject + +/** + * The current semantic version of the integrated OMID library. + */ ++ (NSString *)versionString; + +/** + * Shared OMIDSDK instance. + */ +@property(class, readonly) OMIDMegabraincoSDK *sharedInstance +NS_SWIFT_NAME(shared); + +/** + * A Boolean value indicating whether OM SDK has been activated. + * + * @discussion Check that OM SDK is active prior to creating any ad sessions. + */ +@property(atomic, readonly, getter=isActive) BOOL active; + +/** + * Activate OM SDK before calling other API methods. + * + * @discussion Activation sets up the OM SDK environment. In CTV apps (running tvOS), `activate` should be called on launch in + * order to capture a "last activity" timestamp on launch and each time the user foregrounds the app). + * + * @return Boolean indicating success. + */ +- (BOOL)activate; + +/** + * Update the last activity time + * After activating OM SDK in CTV apps, refresh the "last activity" timestamp in response to user input prior to starting an ad session. + */ +- (void)updateLastActivity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h new file mode 100644 index 0000000000..f56d7c2fd1 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDScriptInjector.h @@ -0,0 +1,26 @@ +// +// OMIDScriptInjector.h +// AppVerificationLibrary +// +// Created by Daria on 21/06/2017. +// + +#import + +/** + * Utility class which enables integration partners to use a standard approach for injecting OM SDK JS into the served tag HTML content. + */ +@interface OMIDMegabraincoScriptInjector : NSObject + +/* + Injects the downloaded OMID JS content into the served HTML. + @param scriptContent containing the OMID JS service content to be injected into the hidden tracking web view. + @param html of the tag content which should be modified to include the downloaded OMID JS content. + @param error If an error occurs, contains an NSError object. + @return modified HTML including OMID JS or nil if an error occurs. + */ ++ (nullable NSString *)injectScriptContent:(nonnull NSString *)scriptContent + intoHTML:(nonnull NSString *)html + error:(NSError *_Nullable *_Nullable)error; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h new file mode 100644 index 0000000000..c704f6b218 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDUniversalAdID.h @@ -0,0 +1,40 @@ +// +// OMIDUniversalAdID.h +// AppVerificationLibrary +// +// Created by Teodor Cristea on 31.03.2025. +// Copyright © 2025 IAB Techlab. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Details about the UniversalAdID for the purpose of tracking ad creatives which will be supplied to the ad session. + */ +@interface OMIDMegabraincoUniversalAdID : NSObject + +@property(nonatomic, readonly, nonnull) NSString *value; +@property(nonatomic, readonly, nonnull) NSString *idRegistry; + +/** + * Initializes new UniversalAdID instance providing both value and idRegistry. + * The UniversalAdID's purpose is to identify an ad creative across different platforms throughout the lifecycle of an advertising campaign. + * + * Both value and idRegistry are mandatory. + * + * @param value It is used to identify the unique creative identifier. + * @param idRegistry It is used to identify the URL for the registry website where the unique creative ID is cataloged. + * @return A new UniversalAdID instance, or nil if any of the parameters are either null or blank + */ +- (nullable instancetype)initWithValue:(nonnull NSString *)value + idRegistry:(nonnull NSString *)idRegistry + error:(NSError *_Nullable *_Nullable)error; + ++ (instancetype)new NS_UNAVAILABLE; +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h new file mode 100644 index 0000000000..4963ce4014 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVASTProperties.h @@ -0,0 +1,71 @@ +// +// OMIDVASTProperties.h +// AppVerificationLibrary +// +// Created by Daria Sukhonosova on 30/06/2017. +// + +#import + +/** + * List of supported media player positions. + */ +typedef NS_ENUM(NSUInteger, OMIDPosition) { + /** + * The ad plays preceding video content. + */ + OMIDPositionPreroll, + /** + * The ad plays in the middle of video content, or between two separate content videos. + */ + OMIDPositionMidroll, + /** + * The ad plays following video content. + */ + OMIDPositionPostroll, + /** + * The ad plays independently of any video content. + */ + OMIDPositionStandalone +}; + +/** + * This object is used to capture key VAST properties so this can be shared with all registered verification providers. + */ +@interface OMIDMegabraincoVASTProperties : NSObject + +@property(nonatomic, readonly, getter = isSkippable) BOOL skippable; +@property(nonatomic, readonly) CGFloat skipOffset; +@property(nonatomic, readonly, getter = isAutoPlay) BOOL autoPlay; +@property(nonatomic, readonly) OMIDPosition position; + +/** + * This method enables the media player to create a new VAST properties instance for skippable media ad placement. + * + * @param skipOffset The number of seconds before the skip button is presented. + * @param autoPlay Determines whether the media will auto-play content. + * @param position The position of the media in relation to other content. + * @return A new instance of VAST properties. + */ +- (nonnull instancetype)initWithSkipOffset:(CGFloat)skipOffset + autoPlay:(BOOL)autoPlay + position:(OMIDPosition)position; + +/** + * This method enables the media player to create a new VAST properties instance for non-skippable media ad placement. + * + * @param autoPlay Determines whether the media will auto-play content. + * @param position The position of the media in relation to other content. + * @return A new instance of VAST properties. + */ +- (nonnull instancetype)initWithAutoPlay:(BOOL)autoPlay + position:(OMIDPosition)position; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +/** + * For OM SDK internal use only. + */ +- (NSDictionary *_Nonnull)toJSON; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h new file mode 100644 index 0000000000..7e27ceb4fc --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMIDVerificationScriptResource.h @@ -0,0 +1,45 @@ +// +// OMIDVerificationScriptResource.h +// AppVerificationLibrary +// +// Created by Daria on 06/06/2017. +// + +#import + +/** + * Details about the verification provider which will be supplied to the ad session. + */ +@interface OMIDMegabraincoVerificationScriptResource : NSObject + +@property(nonatomic, readonly, nonnull) NSURL *URL; +@property(nonatomic, readonly, nullable) NSString *vendorKey; +@property(nonatomic, readonly, nullable) NSString *parameters; + +/** + * Initializes new verification script resource instance which requires vendor specific verification parameters. + * + * When calling this method all arguments are mandatory. + * + * @param vendorKey It is used to uniquely identify the verification provider. + * @param URL The URL to be injected into the OMID managed JavaScript execution environment. + * @param parameters The parameters which the verification provider script is expecting for the ad session. + * @return A new verification script resource instance, or nil if any of the parameters are either null or blank. + */ +- (nullable instancetype)initWithURL:(nonnull NSURL *)URL + vendorKey:(nonnull NSString *)vendorKey + parameters:(nonnull NSString *)parameters; + +/** + * Initializes new verification script resource instance which does not require any vendor specific verification parameters. + * + * When calling this method all arguments are mandatory. + * + * @param URL The URL to be injected into the OMID managed JavaScript execution environment. + * @return A new verification script resource instance, or nil if URL is nil or blank. + */ +- (nullable instancetype)initWithURL:(nonnull NSURL *)URL; + +- (null_unspecified instancetype)init NS_UNAVAILABLE; + +@end diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMSDK.h b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMSDK.h new file mode 100644 index 0000000000..bc3714adb7 --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Headers/OMSDK.h @@ -0,0 +1,18 @@ +// +// OMSDK.h +// OMSDK +// +// Created by Nathanael Hardy on 10/16/20. +// + +#import + +//! Project version number for OMSDK. +FOUNDATION_EXPORT double OMSDKVersionNumber; + +//! Project version string for OMSDK. +FOUNDATION_EXPORT const unsigned char OMSDKVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Info.plist b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Info.plist new file mode 100644 index 0000000000..ba2bfc0c95 Binary files /dev/null and b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Info.plist differ diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Modules/module.modulemap b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Modules/module.modulemap new file mode 100644 index 0000000000..68be4ac04a --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +module OMSDK_Megabrainco { + header "Headers/OMIDImports.h" + export * +} diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/OMSDK_Megabrainco b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/OMSDK_Megabrainco new file mode 100755 index 0000000000..0e5b616904 Binary files /dev/null and b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/OMSDK_Megabrainco differ diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..5ab7e387bd --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,42 @@ + + + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeProductInteraction + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeAdvertisingData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/_CodeSignature/CodeResources b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000000..bd09ed636a --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/OMSDK_Megabrainco.xcframework/tvos-arm64_x86_64-simulator/OMSDK_Megabrainco.framework/_CodeSignature/CodeResources @@ -0,0 +1,289 @@ + + + + + files + + Headers/OMIDAdEvents.h + + R9XY4sAv7ACgYsnZxPBTpYl5hRs= + + Headers/OMIDAdSession.h + + 3reryn2fVrrRTVjyPc42DveBrmg= + + Headers/OMIDAdSessionConfiguration.h + + 4cPpAT11JSmQNVevkHrDNvjOdVg= + + Headers/OMIDAdSessionContext.h + + cI53/kOW1gfnQPzrSTrGuNUMgiQ= + + Headers/OMIDFriendlyObstructionType.h + + ymPA8TI4PL8pK0zhc5ilyQj/SsA= + + Headers/OMIDImports.h + + /ghw/vX0KUlF9SSq4LZhhZDpZb4= + + Headers/OMIDJavaScriptSessionService.h + + fPjHNfetXwGpfNowCFFO8+yFw5c= + + Headers/OMIDMediaEvents.h + + nsgrVEO3DVQoUx9dA30wxxFV0Sg= + + Headers/OMIDPartner.h + + l0f3NDOHI4SlBoOQw9LnA66yrcA= + + Headers/OMIDSDK.h + + eYodqoQbrAYjcea3m1ozTki5uXA= + + Headers/OMIDScriptInjector.h + + cRiyJME2HiNGbnCTYMdrPh7qYqA= + + Headers/OMIDUniversalAdID.h + + 7Cr44fA+sS4Zoh0adycqUlmDQio= + + Headers/OMIDVASTProperties.h + + KMGNcWnWevzkVsOxM8KFuYiYV0E= + + Headers/OMIDVerificationScriptResource.h + + idhPGXC9PENISWWbJfi8iXHXnoQ= + + Headers/OMSDK.h + + SwK6aatAfFlLHnP2+J8eYoZyaqs= + + Info.plist + + o1RMST2tdohmQ2kiUy5S8F8PdzE= + + Modules/module.modulemap + + HYhqPxaRJ9xYI0UlwlmISpeg44I= + + PrivacyInfo.xcprivacy + + 7BgfS40JHW2Znl7afTrGvxB58Ws= + + + files2 + + Headers/OMIDAdEvents.h + + hash2 + + CoY20RTXjoC637zlFcOKRmDKJa/zNChWvFY4GWNn+o8= + + + Headers/OMIDAdSession.h + + hash2 + + SYKR0XeG/Comhyb6YVAcIvvdDK5eDRfUMW1rDTXq5Zk= + + + Headers/OMIDAdSessionConfiguration.h + + hash2 + + W7Z/jVKmfs+A6wV39QRhZvDDfH7OPEYm2D5Eq6PQlfI= + + + Headers/OMIDAdSessionContext.h + + hash2 + + 5DsZzwMopMYP2JjFVz9NYt/0I3wsrng+4PTU/b5Ovow= + + + Headers/OMIDFriendlyObstructionType.h + + hash2 + + /ZmBFlTK7mS0fZy4WqxCTpfhwDAEA4qlDHoed4FawBg= + + + Headers/OMIDImports.h + + hash2 + + XQBgb62m3DEN2XBtnlS+hqca4MEIuBJjq6po9fIbZco= + + + Headers/OMIDJavaScriptSessionService.h + + hash2 + + xfs8xwzBa7Wl161ejYUDVUnYPoKe+DTOf8Xez+HPE7c= + + + Headers/OMIDMediaEvents.h + + hash2 + + LT3wOdTJNIJm9MWK2HckPI88lMnQCp9ox7in4gOUK9Q= + + + Headers/OMIDPartner.h + + hash2 + + 505FF5MLvAs+ygkl/uw8g7qNNY4KxL/npxntihtcTYo= + + + Headers/OMIDSDK.h + + hash2 + + +vuDNfGgJ2xCLWPC6nrrUQEQNtNSGAV3GvG66liJoI8= + + + Headers/OMIDScriptInjector.h + + hash2 + + AWsCGVUA648O5HFgAz2hJbPLe7QeS/lb75EKy14uQSc= + + + Headers/OMIDUniversalAdID.h + + hash2 + + k+lIAdbdLvdsYpsNcuXZSE28uarI9X5+uXM+XDjEVPo= + + + Headers/OMIDVASTProperties.h + + hash2 + + rGRhNvvXhz2P2iV0vV1i3O/inty3TemltWSb2MBoJss= + + + Headers/OMIDVerificationScriptResource.h + + hash2 + + hYob6SrFBbF8Ng2uRCpCo1TQ+R/S+uaToRwx7OUcDhg= + + + Headers/OMSDK.h + + hash2 + + RMvQNEJLOImLem6a8DtHWs08tFMncdsWXtF/QfYUIvQ= + + + Modules/module.modulemap + + hash2 + + bSYDPXFosRV287N0sApinZaHy+IrECKyicuVYl74Mn8= + + + PrivacyInfo.xcprivacy + + hash2 + + 5rdpDTW6MDoz1u2y0rCJB5ensp/KZWPv7EAq4o8GtfM= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/flutter_inappwebview_ios/ios/Frameworks/OMSDK/PrivacyInfo.xcprivacy b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..5ab7e387bd --- /dev/null +++ b/flutter_inappwebview_ios/ios/Frameworks/OMSDK/PrivacyInfo.xcprivacy @@ -0,0 +1,42 @@ + + + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeProductInteraction + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeAdvertisingData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + + diff --git a/flutter_inappwebview_ios/ios/flutter_inappwebview_ios.podspec b/flutter_inappwebview_ios/ios/flutter_inappwebview_ios.podspec index d0aec2684f..782334756c 100755 --- a/flutter_inappwebview_ios/ios/flutter_inappwebview_ios.podspec +++ b/flutter_inappwebview_ios/ios/flutter_inappwebview_ios.podspec @@ -5,37 +5,46 @@ Pod::Spec.new do |s| s.name = 'flutter_inappwebview_ios' s.version = '0.0.1' - s.summary = 'A new Flutter plugin.' + s.summary = 'iOS platform code for flutter_inappwebview.' s.description = <<-DESC -A new Flutter plugin. +Native iOS implementation for the flutter_inappwebview plugin, including the +OM SDK dependencies and privacy resources required at runtime. DESC - s.homepage = 'http://example.com' - s.license = { :file => '../LICENSE' } - s.author = { 'Your Company' => 'email@example.com' } - s.source = { :path => '.' } - s.source_files = 'Classes/**/*' - s.resources = 'Storyboards/**/*.storyboard' - s.public_header_files = 'Classes/**/*.h' - s.dependency 'Flutter' - s.resource_bundles = {'flutter_inappwebview_ios_privacy' => ['Resources/PrivacyInfo.xcprivacy']} - - # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } - - s.libraries = 'swiftCoreGraphics' - - s.xcconfig = { - 'LIBRARY_SEARCH_PATHS' => '$(SDKROOT)/usr/lib/swift', + s.homepage = 'https://github.com/pichillilorenzo/flutter_inappwebview' + s.license = { :type => 'Apache-2.0', :file => '../LICENSE' } + s.author = { 'Lorenzo Pichilli' => 'lorenzo@pichillilorenzo.com' } + s.source = { + :git => 'https://github.com/pichillilorenzo/flutter_inappwebview.git', + :tag => s.version.to_s } - s.swift_version = '5.0' - - s.platforms = { :ios => '12.0' } - s.dependency 'OrderedSet', '~>6.0.3' - + s.swift_versions = ['5.0'] + s.ios.deployment_target = '12.0' s.default_subspec = 'Core' - s.subspec 'Core' do |core| - core.platform = :ios, '12.0' + core.source_files = 'Classes/**/*' + core.resources = [ + 'Storyboards/**/*.storyboard', + 'Frameworks/OMSDK/PrivacyInfo.xcprivacy' + ] + core.public_header_files = 'Classes/**/*.h' + core.resource_bundles = { 'flutter_inappwebview_ios_privacy' => ['Resources/PrivacyInfo.xcprivacy'] } + core.vendored_frameworks = 'Frameworks/OMSDK/OMSDK_Megabrainco.xcframework' + core.dependency 'Flutter' + core.dependency 'OrderedSet', '~>6.0.3' + core.libraries = 'swiftCoreGraphics' + core.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64', + 'OTHER_LDFLAGS' => '$(inherited) -framework "OMSDK_Megabrainco"', + 'FRAMEWORK_SEARCH_PATHS' => '$(inherited) ${PODS_TARGET_SRCROOT}/Frameworks/OMSDK' + } + core.user_target_xcconfig = { + 'OTHER_LDFLAGS' => '$(inherited) -framework "OMSDK_Megabrainco"', + 'FRAMEWORK_SEARCH_PATHS' => '$(inherited) ${PODS_ROOT}/flutter_inappwebview_ios/Frameworks/OMSDK ${PODS_ROOT}/../.symlinks/plugins/flutter_inappwebview_ios/ios/Frameworks/OMSDK' + } + core.xcconfig = { + 'LIBRARY_SEARCH_PATHS' => '$(SDKROOT)/usr/lib/swift' + } end end diff --git a/flutter_inappwebview_ios/lib/src/in_app_webview/in_app_webview_controller.dart b/flutter_inappwebview_ios/lib/src/in_app_webview/in_app_webview_controller.dart index b246c6de5e..8081090874 100644 --- a/flutter_inappwebview_ios/lib/src/in_app_webview/in_app_webview_controller.dart +++ b/flutter_inappwebview_ios/lib/src/in_app_webview/in_app_webview_controller.dart @@ -2725,11 +2725,6 @@ class IOSInAppWebViewController extends PlatformInAppWebViewController return id; } - @override - Future getNativeWebViewByInstanceId(String instanceId) async { - return await _staticChannel.invokeMethod('getNativeWebViewByInstanceId', {'instanceId': instanceId}); - } - @override Future> getAllRegisteredInstanceIds() async { final result = await _staticChannel.invokeMethod>('getAllRegisteredInstanceIds'); diff --git a/flutter_inappwebview_platform_interface/lib/src/in_app_webview/platform_inappwebview_controller.dart b/flutter_inappwebview_platform_interface/lib/src/in_app_webview/platform_inappwebview_controller.dart index 99c24cee0a..3a1b0b3fd6 100644 --- a/flutter_inappwebview_platform_interface/lib/src/in_app_webview/platform_inappwebview_controller.dart +++ b/flutter_inappwebview_platform_interface/lib/src/in_app_webview/platform_inappwebview_controller.dart @@ -2438,12 +2438,6 @@ abstract class PlatformInAppWebViewController extends PlatformInterface 'setSafeBrowsingWhitelist is not implemented on the current platform'); } - /// Get native webview instance by instanceId. - Future getNativeWebViewByInstanceId(String instanceId) { - throw UnimplementedError( - 'getNativeWebViewByInstanceId is not implemented on the current platform'); - } - /// Returns all registered webview instance ids. Future> getAllRegisteredInstanceIds() { throw UnimplementedError(