You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Swift
		
	
import UIKit
 | 
						|
import PushKit
 | 
						|
import Flutter
 | 
						|
import Firebase
 | 
						|
import flutter_callkit_incoming
 | 
						|
import flutter_local_notifications
 | 
						|
 | 
						|
// PKPushRegistryDelegate
 | 
						|
@UIApplicationMain
 | 
						|
@objc class AppDelegate: FlutterAppDelegate, PKPushRegistryDelegate {
 | 
						|
  override func application(
 | 
						|
    _ application: UIApplication,
 | 
						|
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
 | 
						|
  ) -> Bool {
 | 
						|
     FirebaseApp.configure()
 | 
						|
     FlutterLocalNotificationsPlugin.setPluginRegistrantCallback { (registry) in
 | 
						|
           GeneratedPluginRegistrant.register(with: registry)
 | 
						|
       }
 | 
						|
       if #available(iOS 10.0, *) {
 | 
						|
         UNUserNotificationCenter.current().delegate = self as UNUserNotificationCenterDelegate
 | 
						|
       }
 | 
						|
    GeneratedPluginRegistrant.register(with: self)
 | 
						|
 | 
						|
        //Setup VOIP
 | 
						|
        let mainQueue = DispatchQueue.main
 | 
						|
        let voipRegistry: PKPushRegistry = PKPushRegistry(queue: mainQueue)
 | 
						|
        voipRegistry.delegate = self
 | 
						|
        voipRegistry.desiredPushTypes = [PKPushType.voIP]
 | 
						|
 | 
						|
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
 | 
						|
    }
 | 
						|
 | 
						|
    // Handle updated push credentials
 | 
						|
    func pushRegistry(_ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, for type: PKPushType) {
 | 
						|
        print(credentials.token)
 | 
						|
        let deviceToken = credentials.token.map { String(format: "%02x", $0) }.joined()
 | 
						|
        print(deviceToken)
 | 
						|
        print("deviceToken From Swift")
 | 
						|
        //Save deviceToken to your server
 | 
						|
        SwiftFlutterCallkitIncomingPlugin.sharedInstance?.setDevicePushTokenVoIP(deviceToken)
 | 
						|
    }
 | 
						|
 | 
						|
    func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenFor type: PKPushType) {
 | 
						|
        print("didInvalidatePushTokenFor")
 | 
						|
        SwiftFlutterCallkitIncomingPlugin.sharedInstance?.setDevicePushTokenVoIP("")
 | 
						|
    }
 | 
						|
 | 
						|
    // Handle incoming pushes
 | 
						|
    func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
 | 
						|
        print("didReceiveIncomingPushWith")
 | 
						|
        guard type == .voIP else { return }
 | 
						|
        print(payload.dictionaryPayload)
 | 
						|
//         let id = payload.dictionaryPayload["id"] as? String ?? ""
 | 
						|
//         let nameCaller = payload.dictionaryPayload["nameCaller"] as? String ?? ""
 | 
						|
//         let handle = payload.dictionaryPayload["handle"] as? String ?? ""
 | 
						|
        let isVideo = payload.dictionaryPayload["isVideo"] as? Bool ?? false
 | 
						|
//
 | 
						|
//
 | 
						|
         let data = flutter_callkit_incoming.Data(id: "1", nameCaller: "Mohemm", handle: "handle", type: isVideo ? 1 : 0)
 | 
						|
//         //set more data
 | 
						|
//         data.extra = ["user": "abc@123", "platform": "ios"]
 | 
						|
//         //data.iconName = ...
 | 
						|
//         //data.....
 | 
						|
//         data.appName = "Mohemm"
 | 
						|
//         data.iconName = "Mohemm"
 | 
						|
        SwiftFlutterCallkitIncomingPlugin.sharedInstance?.showCallkitIncoming(data, fromPushKit: true)
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
}
 |