123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- //
- // AppDelegate.swift
- // O2Platform
- //
- // Created by 刘振兴 on 16/6/14.
- // Copyright © 2016年 zoneland. All rights reserved.
- //
- import UIKit
- import CocoaLumberjack
- import AlamofireNetworkActivityIndicator
- import UserNotifications
- import Flutter
- import IQKeyboardManagerSwift
- let isProduction = true
- @UIApplicationMain
- class AppDelegate: FlutterAppDelegate, JPUSHRegisterDelegate, UNUserNotificationCenterDelegate {
-
- var _mapManager: BMKMapManager?
-
- //中心服务器节点类
- public static let o2Collect = O2Collect()
- //网络监听
- public let o2ReachabilityManager = O2ReachabilityManager.sharedInstance
- // flutter engine
- var flutterEngine : FlutterEngine?
-
- override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
-
- if #available(iOS 13.0, *) {
- window.overrideUserInterfaceStyle = .light
- }
-
- let themeName = AppConfigSettings.shared.themeName
- if themeName != "" {
- //主题
- print("主题色:\(themeName)")
- O2ThemeManager.setTheme(plistName: themeName, path: .mainBundle)
- }else {
- O2ThemeManager.setTheme(plistName: "red", path: .mainBundle)
- }
- //搜索框
- UISearchBar.appearance().theme_barTintColor = ThemeColorPicker(keyPath: "Base.base_color")
- UISearchBar.appearance().tintColor = UIColor.white
- UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).theme_tintColor = ThemeColorPicker(keyPath: "Base.base_color")
-
-
- //启动日志管理器
- O2Logger.startLogManager()
- //日志文件
- // _ = O2Logger.getLogFiles()
- O2Logger.debug("设置运行版本==========,\(PROJECTMODE)")
- //网络检查
- o2ReachabilityManager.startListening()
- //Alamofire
- NetworkActivityIndicatorManager.shared.isEnabled = true
-
- //db
- let _ = DBManager.shared
-
- //设置一个是否第一授权的标志
- if #available(iOS 10.0, *){
- let center = UNUserNotificationCenter.current()
- center.delegate = self
- let options:UNAuthorizationOptions = [.badge,.alert,.sound]
- center.requestAuthorization(options: options, completionHandler: { (granted, err) in
- if granted == true {
- //记录已经打开授权
- //print("aaaaaaaaaaaa")
- AppConfigSettings.shared.notificationGranted = true
- AppConfigSettings.shared.firstGranted = true
- NotificationCenter.default.post(name: NSNotification.Name.init("SETTING_NOTI"), object: nil)
- }else{
- //记录禁用授权
- AppConfigSettings.shared.notificationGranted = false
- AppConfigSettings.shared.firstGranted = true
- NotificationCenter.default.post(name: NSNotification.Name.init("SETTING_NOTI"), object: nil)
- }
- })
-
- }else{
- let types:UIUserNotificationType = [.badge,.alert,.sound]
- let setting = UIUserNotificationSettings(types: types, categories: nil)
- UIApplication.shared.registerUserNotificationSettings(setting)
- }
-
-
- //Buglyy异常上报
- Bugly.start(withAppId: BUGLY_ID)
-
- //JPush
- _setupJPUSH()
- JPUSHService.setup(withOption: launchOptions, appKey: JPUSH_APP_KEY, channel: JPUSH_channel, apsForProduction: isProduction)
-
- _mapManager = BMKMapManager()
- BMKMapManager.setCoordinateTypeUsedInBaiduMapSDK(.COORDTYPE_BD09LL)
- _mapManager?.start(BAIDU_MAP_KEY, generalDelegate: nil)
-
-
- JPUSHService.registrationIDCompletionHandler { (resCode, registrationID) in
- if resCode == 0 {
- O2Logger.debug("registrationID获取成功\(registrationID ?? "")")
- O2AuthSDK.shared.setDeviceToken(token: registrationID ?? "registrationIDerror0x0x")
- }else{
- O2Logger.debug("registrationID获取失败,code:\(resCode)")
- O2AuthSDK.shared.setDeviceToken(token: registrationID ?? "registrationIDerror0x0x")
- }
- }
-
-
- // OOPlusButtonSubclass.register()
- OOTabBarHelper.initTabBarStyle()
-
-
- IQKeyboardManager.shared.enable = false
-
- return super.application(application, didFinishLaunchingWithOptions: launchOptions)
- }
-
-
- // MARK:- private func Jpush
- private func _setupJPUSH() {
- let entity = JPUSHRegisterEntity()
- entity.types = NSInteger(UNAuthorizationOptions.alert.rawValue) |
- NSInteger(UNAuthorizationOptions.sound.rawValue) |
- NSInteger(UNAuthorizationOptions.badge.rawValue)
- JPUSHService.register(forRemoteNotificationConfig: entity, delegate: self)
- }
-
-
-
- //注册 APNs 获得device token
- override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
- super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
- let deviceTokenStr = deviceToken.map { String(format: "%02.2hhx", arguments: [$0]) }.joined()
- DDLogDebug("获取到APNs deviceToken \(deviceTokenStr)")
- O2AuthSDK.shared.setApnsToken(token: deviceTokenStr)
- NotificationCenter.default.post(name: Notification.Name(rawValue: "DidRegisterRemoteNotification"), object: deviceToken)
- JPUSHService.registerDeviceToken(deviceToken)
- }
-
-
-
- override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
- DDLogDebug("open url :\(url.absoluteString)")
- return true
- }
-
-
- override func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) {
- if notificationSettings.types.rawValue == 0 {
- AppConfigSettings.shared.notificationGranted = false
- AppConfigSettings.shared.firstGranted = true
- NotificationCenter.default.post(name: NSNotification.Name.init("SETTING_NOTI"), object: nil)
- }else{
- AppConfigSettings.shared.notificationGranted = true
- AppConfigSettings.shared.firstGranted = true
- NotificationCenter.default.post(name: NSNotification.Name.init("SETTING_NOTI"), object: nil)
- }
- }
-
- //实现注册 APNs 失败接口
- override func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
- DDLogError("didFailToRegisterForRemoteNotificationsWithError: \(error.localizedDescription)")
- }
-
- override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
- JPUSHService.handleRemoteNotification(userInfo)
- DDLogDebug("收到通知,\(userInfo)")
- NotificationCenter.default.post(name: Notification.Name(rawValue: "AddNotificationCount"), object: nil)
- }
-
-
- override func applicationWillEnterForeground(_ application: UIApplication) {
- application.applicationIconBadgeNumber = 0
- // application.cancelAllLocalNotifications()
- }
-
- override func applicationDidBecomeActive(_ application: UIApplication) {
- }
-
- override func applicationDidEnterBackground(_ application: UIApplication) {
- application.applicationIconBadgeNumber = 0
- // application.cancelAllLocalNotifications()
- }
-
-
- deinit {
- o2ReachabilityManager.stopListening()
- }
-
-
- // iOS 12 Support
- @available(iOS 12.0, *)
- func jpushNotificationCenter(_ center: UNUserNotificationCenter!, openSettingsFor notification: UNNotification!) {
- // open
- if (notification != nil && (notification?.request.trigger?.isKind(of: UNPushNotificationTrigger.self) == true) ) {
- //从通知界面直接进入应用
- DDLogInfo("从通知界面直接进入应用............")
- }else{
- //从通知设置界面进入应用
- DDLogInfo("从通知设置界面进入应用............")
- }
- }
-
-
- @available(iOS 10.0, *)
- func jpushNotificationCenter(_ center: UNUserNotificationCenter!, willPresent notification: UNNotification!,
- withCompletionHandler completionHandler: ((Int) -> Void)!) {
- let userInfo = notification.request.content.userInfo
- let request = notification.request // 收到推送的请求
- let content = request.content // 收到推送的消息内容
- let badge = content.badge // 推送消息的角标
- let body = content.body // 推送消息体
- let sound = content.sound // 推送消息的声音
- let subtitle = content.subtitle // 推送消息的副标题
- let title = content.title // 推送消息的标题
- if (notification.request.trigger?.isKind(of: UNPushNotificationTrigger.self))! {
- JPUSHService.handleRemoteNotification(userInfo)
- }else{
- //判断为本地通知
- O2Logger.debug("iOS10 前台收到本地通知:{\nbody:\(body),\ntitle:\(title),\nsubtitle:\(subtitle),\nbadge:\(badge ?? 0),\nsound:\(sound.debugDescription)")
- }
- UIApplication.shared.applicationIconBadgeNumber = 0
- JPUSHService.setBadge(0)
- completionHandler(Int(UNNotificationPresentationOptions.alert.rawValue|UNNotificationPresentationOptions.badge.rawValue|UNNotificationPresentationOptions.sound.rawValue))
-
- }
-
-
- @available(iOS 10.0, *)
- func jpushNotificationCenter(_ center: UNUserNotificationCenter!, didReceive response: UNNotificationResponse!, withCompletionHandler completionHandler: (() -> Void)!) {
-
- let userInfo = response.notification.request.content.userInfo
- let request = response.notification.request // 收到推送的请求
- let content = request.content // 收到推送的消息内容
-
- let badge = content.badge // 推送消息的角标
- let body = content.body // 推送消息体
- let sound = content.sound // 推送消息的声音
- let subtitle = content.subtitle // 推送消息的副标题
- let title = content.title // 推送消息的标题
- if (response.notification.request.trigger?.isKind(of: UNPushNotificationTrigger.self))! {
- JPUSHService.handleRemoteNotification(userInfo)
- }else{
- //判断为本地通知
- O2Logger.debug("iOS10 前台收到本地通知:{\nbody:\(body),\ntitle:\(title),\nsubtitle:\(subtitle),\nbadge:\(badge ?? 0),\nsound:\(sound.debugDescription)")
- }
- UIApplication.shared.applicationIconBadgeNumber = 0
- JPUSHService.setBadge(0)
- completionHandler()
- }
-
-
-
- }
|