You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

222 lines
8.0 KiB

//
// AppDelegate.swift
// GMERemittance
//
// Created by Fm-user on 11/30/17.
// Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
import Firebase
import FirebaseAuth
import UserNotifications
import FirebaseInstanceID
import FirebaseMessaging
import BRYXBanner
import Fabric
import Crashlytics
import AlamofireNetworkActivityLogger
import IQKeyboardManagerSwift
import LGSideMenuController
import Localize_Swift
let server: Server = .uat
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate {
var window: UIWindow?
let gcmMessageIDKey = "gcm_message_id"
var firstTranscationStatusForHome:Bool?
var firstTranscationStatusForProfileForm:Bool?
var cmRegistrationId: String?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.applicationIconBadgeNumber = 0
firstTranscationStatusForHome = true
firstTranscationStatusForProfileForm = true
NetworkActivityLogger.shared.startLogging()
NetworkActivityLogger.shared.level = .debug
IQKeyboardManager.shared.enable = true
FirebaseApp.configure()
Fabric.with([Crashlytics.self])
Fabric.sharedSDK().debug = true
Messaging.messaging().delegate = self
registerForNotification(application: application)
setUUID()
setupNavBar()
setupStatusBar()
setEntryPoint()
isetupLanguage()
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self
} else {
// Fallback on earlier versions
}
return true
}
private func isetupLanguage() {
let language = UserDefaults.standard.string(forKey: AppConstants.currentLanguage)
if (language != nil), let preferedDeviceLanguage = Locale.preferredLanguages.elementAt(index: 0), let _ = preferedDeviceLanguage.components(separatedBy: "-").first {
Localize.setCurrentLanguage(language ?? "en")
}
}
private func setUUID() {
if UserDefaults.standard.string(forKey: AppConstants.uuid) == nil {
let uuid = UUID().uuidString
UserDefaults.standard.set(uuid, forKey: AppConstants.uuid)
}
}
private func setupStatusBar() {
// let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
// if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) {
// statusBar.backgroundColor = UIColor.blue
// }
}
private func setupNavBar() {
let appearance = UINavigationBar.appearance()
appearance.backIndicatorImage = #imageLiteral(resourceName: "backIconBlack")
appearance.backIndicatorTransitionMaskImage = #imageLiteral(resourceName: "backIconBlack")
appearance.tintColor = UIColor.black
}
private func setEntryPoint() {
let _default = UserDefaults.standard
if let _ = _default.string(forKey: UserKeys.accessCode) {
// user is logged in
let mainWireFrame = MainWireframe.shared
// self.window?.rootViewController =
let tabBarViewController = mainWireFrame?.getMainView()
let sidemenuVc = UIStoryboard(name: "SideMenu", bundle: nil).instantiateViewController(withIdentifier: "SideMenuViewController") as! SideMenuViewController
//
let sideMenuController = LGSideMenuController(rootViewController: tabBarViewController, leftViewController: sidemenuVc, rightViewController: nil)
//
sideMenuController.rootViewLayerShadowColor = UIColor(white: 0.9, alpha: 0.6)
sideMenuController.rootViewLayerShadowRadius = 8.0
sideMenuController.leftViewPresentationStyle = .scaleFromBig
sideMenuController.leftViewWidth = UIScreen.main.bounds.width - 70.0
if #available(iOS 10.0, *) {
sideMenuController.leftViewBackgroundBlurEffect = UIBlurEffect(style: .regular)
} else {
// Fallback on earlier versions
}
window?.backgroundColor = sidemenuVc.view.backgroundColor
self.window?.rootViewController = sideMenuController
}else {
// go to splashscreen
let splashWireframe = SplashScreenWireframe()
let nav = UINavigationController.init(rootViewController: splashWireframe.getMainView())
self.window?.rootViewController = nav
}
}
private func registerForNotification(application: UIApplication) {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerForRemoteNotifications()
application.registerUserNotificationSettings(settings)
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
if userInfo[gcmMessageIDKey] != nil {
}
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
}
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
cmRegistrationId = fcmToken
print(fcmToken)
}
func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
print(remoteMessage.appData)
}
public func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
var userInfo = notification.request.content.userInfo
// if let aps = userInfo["aps"] as? NSDictionary,
// let alert = aps["alert"] as? NSDictionary,
// let body = alert["body"] as? String,
// let title = alert["title"] as? String {
// let image = UIImage.init(named: "ic_gme")
// let banner = Banner(title: title, subtitle: body, image: image, backgroundColor: UIColor(red:0.93, green:0.11, blue:0.14, alpha:1.0))
// banner.show(duration: 5.0)
// }
completionHandler(
[UNNotificationPresentationOptions.alert,
UNNotificationPresentationOptions.sound,
UNNotificationPresentationOptions.badge])
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
// print("Unable to register for remote notifications: \(error.localizedDescription)")
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
}
/**
method for redirection of page when push notification tap
*/
func applicationDidEnterBackground(_ application: UIApplication) {
let store = UserDefaults.standard
let language = Localize.currentLanguage()
store.set(language, forKey: AppConstants.currentLanguage)
let viewcontroller = UIViewController()
viewcontroller.view.backgroundColor = AppConstants.themeRedColor
self.window?.rootViewController?.present(viewcontroller, animated: false, completion: nil)
}
func applicationWillEnterForeground(_ application: UIApplication) {
if let language = UserDefaults.standard.string(forKey: AppConstants.currentLanguage) as? String {
Localize.setCurrentLanguage(language)
}
self.window?.rootViewController?.dismiss(animated: false, completion: nil)
}
}