|
|
|
|
import UIKit
|
|
|
|
|
import PushKit
|
|
|
|
|
import Flutter
|
|
|
|
|
import Firebase
|
|
|
|
|
import flutter_callkit_incoming
|
|
|
|
|
import flutter_local_notifications
|
|
|
|
|
|
|
|
|
|
// PKPushRegistryDelegate
|
|
|
|
|
@UIApplicationMain
|
|
|
|
|
@objc class AppDelegate: FlutterAppDelegate {
|
|
|
|
|
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()
|
|
|
|
|
// //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)
|
|
|
|
|
//// data.extra = ["user": "abc@123", "platform": "ios"]
|
|
|
|
|
//// data.iconName = "Mohemm"
|
|
|
|
|
// SwiftFlutterCallkitIncomingPlugin.sharedInstance?.showCallkitIncoming(data, fromPushKit: true)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|