How to access NSUserActivity in FlutterAppDelegate interface and Access referrerUrl for AppStore install

428 Views Asked by At

This is the current implementation of AppDelegate

import UIKit
import Flutter
import flutter_downloader
import moengage_flutter
import MoEngage
import GoogleCast
import UserNotifications


@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate, GCKLoggerDelegate {
  let kReceiverAppID = kGCKDefaultMediaReceiverApplicationID
  let kDebugLoggingEnabled = true
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
  ) -> Bool {
      if #available(iOS 10.0, *) {
        UNUserNotificationCenter.current().delegate = self as UNUserNotificationCenterDelegate
      }

    GeneratedPluginRegistrant.register(with: self)
    FlutterDownloaderPlugin.setPluginRegistrantCallback(registerPlugins)
      
      //print(application.NSUserActivity.referrerURL)
      //print(self.NSUserActivity)

      
      print("refer");
    var sdkConfig : MOSDKConfig
    let yourAppID = "" //App ID: You can be obtain it from App Settings in MoEngage Dashboard.
    if let config = MoEngage.sharedInstance().getDefaultSDKConfiguration() {
        sdkConfig = config
        sdkConfig.moeAppID = yourAppID
    }
    else{
        sdkConfig = MOSDKConfig.init(appID: yourAppID)
    }
      sdkConfig.appGroupID = ""
        sdkConfig.moeDataCenter = DATA_CENTER_01
        sdkConfig.optOutIDFATracking = true
        sdkConfig.optOutIDFVTracking = false
        sdkConfig.optOutDataTracking = false
        sdkConfig.optOutPushNotification = false
        sdkConfig.optOutInAppCampaign = false
        // use MODataCenter enum to set the datacenter for your account

    MOFlutterInitializer.sharedInstance.initializeWithSDKConfig(sdkConfig, andLaunchOptions: launchOptions)
      //
      if #available(iOS 10.0, *) {
        // For iOS 10 display notification (sent via APNS)
        UNUserNotificationCenter.current().delegate = self

        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(
          options: authOptions,
          completionHandler: { _, _ in }
        )
      } else {
        let settings: UIUserNotificationSettings =
          UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
      }

      application.registerForRemoteNotifications()

      
    let criteria = GCKDiscoveryCriteria(applicationID: kReceiverAppID)
        let options = GCKCastOptions(discoveryCriteria: criteria)
        GCKCastContext.setSharedInstanceWith(options)
        GCKCastContext.sharedInstance().useDefaultExpandedMediaControls = true
        GCKLogger.sharedInstance().delegate = self
    
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
    override func applicationWillResignActive(
      _ application: UIApplication
    ) {
      self.window.isHidden = true;
    }
    override func applicationDidBecomeActive(
      _ application: UIApplication
    ) {
      self.window.isHidden = false;
    }
}
private func registerPlugins(registry: FlutterPluginRegistry) { 
    if (!registry.hasPlugin("FlutterDownloaderPlugin")) {
        FlutterDownloaderPlugin.register(with: registry.registrar(forPlugin: "FlutterDownloaderPlugin")!)
    }
}

    

Tried like this but throws compilation error as method does not override super class

override func application(
        _ application: UIApplication,continue userActivity: NSUserActivity,

        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
      ) 

I want to access NSUserActivity for userActivity.referrerURL

If you have any other ideas to access this referrerURL in flutter plugin for ios that would be awesome as well. Any help will be appreciated.I really need help here

0

There are 0 best solutions below