Swift3.0整合極光推送
現在很多程式都開始使用Swift開發了,但是第三方庫大多數都是用OC寫的,所以我們要使用Swift和OC混編。今天的內容主要講Swift3.0整合極光推送。
1.準備工作
整合指南,極光上說的都很清楚,把建立應用和配置工程實現。SDK下載地址。在橋接標頭檔案中新增
#import "JPUSHService.h"
// iOS10註冊APNs所需標頭檔案
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
#import <UserNotifications/UserNotifications.h>
#endif
2.Swift3.0整合
(1)AppDelegate.swift中新增代理
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate,JPUSHRegisterDelegate {
}
(2)註冊推送及處理應用未開啟時收到推送訊息
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// 通知註冊實體類
let entity = JPUSHRegisterEntity();
entity.types = Int(JPAuthorizationOptions.alert.rawValue) | Int(JPAuthorizationOptions.sound.rawValue) | Int(JPAuthorizationOptions.badge.rawValue);
JPUSHService.register(forRemoteNotificationConfig: entity, delegate: self);
// 註冊極光推送
JPUSHService.setup(withOption: launchOptions, appKey: "845b93e08c7fa192df019c07", channel:"Publish channel" , apsForProduction: false);
// 獲取推送訊息
let remote = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? Dictionary<String,Any>;
// 如果remote不為空,就代表應用在未開啟的時候收到了推送訊息
if remote != nil {
// 收到推送訊息實現的方法
self.perform(#selector(receivePush), with: remote, afterDelay: 1.0);
}
return true;
}
(3)實現代理方法
// MARK: -JPUSHRegisterDelegate
// iOS 10.x 需要
@available(iOS 10.0, *)
func jpushNotificationCenter(_ center: UNUserNotificationCenter!, willPresent notification: UNNotification!, withCompletionHandler completionHandler: ((Int) -> Void)!) {
let userInfo = notification.request.content.userInfo;
if notification.request.trigger is UNPushNotificationTrigger {
JPUSHService.handleRemoteNotification(userInfo);
}
completionHandler(Int(UNNotificationPresentationOptions.alert.rawValue))
}
@available(iOS 10.0, *)
func jpushNotificationCenter(_ center: UNUserNotificationCenter!, didReceive response: UNNotificationResponse!, withCompletionHandler completionHandler: (() -> Void)!) {
let userInfo = response.notification.request.content.userInfo;
if response.notification.request.trigger is UNPushNotificationTrigger {
JPUSHService.handleRemoteNotification(userInfo);
}
completionHandler();
// 應用開啟的時候收到推送訊息
NotificationCenter.default.post(name: NSNotification.Name(rawValue: NotificationName_ReceivePush), object: NotificationObject_Sueecess, userInfo: userInfo)
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
JPUSHService.handleRemoteNotification(userInfo);
completionHandler(UIBackgroundFetchResult.newData);
}
// 接收到推送實現的方法
func receivePush(_ userInfo : Dictionary<String,Any>) {
// 角標變0
UIApplication.shared.applicationIconBadgeNumber = 0;
// 剩下的根據需要自定義
self.tabBarVC?.selectedIndex = 0;
NotificationCenter.default.post(name: NSNotification.Name(rawValue: NotificationName_ReceivePush), object: NotificationObject_Sueecess, userInfo: userInfo)
}
}
我看網上沒有人寫用Swift3.0整合極光推送,自己整合的時候遇到了很多坑,所以分享出來,希望大家可以少浪費點大腦細胞☺。
相關文章
- Flutter應用整合極光推送Flutter
- iOS 極光推送整合與開發iOS
- iOS —— 極光推送和極光IMiOS
- Android開發之極光推送的整合Android
- 極光推送總結
- 快捷地整合極光推送(JPush)到 Laravel 專案中Laravel
- 極光推送-java工具類Java
- 極光推送—java快速接入Java
- 極光推送證書篇
- iOS極光推送封裝iOS封裝
- 使用極光推送實現分組傳送和服務端整合服務端
- 在 Laravel 中使用 極光推送Laravel
- 極光推送 tag alias 設定
- Laravel 極光推送驅動,使用極光不再那麼麻煩!Laravel
- APP訊息推送 極光推送 示例程式碼APP
- 極光筆記|極光推送在APICloud平臺的使用教程筆記APICloud
- iOS 極光推送遇到的問題iOS
- iOS-極光推送開發小結iOS
- 多包名打包以及整合“極光推送”的坑點(區別於“多渠道打包”)
- 極光筆記丨iOS 15推送新特性筆記iOS
- 極光推送-服務端端智慧人社訊息推送方式服務端
- 極光推送申請iOS推送證書p12及配置教程iOS
- 極光推送申請iOS推送證書p12及配置流程iOS
- [外掛擴充套件]APP極光推送外掛!套件APP
- iOS_極光推送的UNNotificationServiceExtension實現富文字iOS
- JPush極光推送Java伺服器端例項Java伺服器
- php 第三方 極光推送domo(Android版)PHPAndroid
- 在ionic專案中使用極光推送實現推送 & 伺服器端程式碼伺服器
- 極光推送demo在android studio中無法執行Android
- iOS .a庫打包成.framework(將極光推送的.a庫打包進framework)iOSFramework
- 適配 iOS 10,極光推送使用者要做這 6 處更改iOS
- ios 極光推送獲取當前控制器進行介面跳轉iOS
- Swift - JPush極光推送的使用4(根據Tag標籤,給同一類別使用者發推送)Swift
- 極光筆記 | 極光服務的信創改造實踐筆記
- 極光筆記丨Spark SQL 在極光的建設實踐筆記SparkSQL
- 極光筆記 | 極光PUSH服務助力企業提升搶單速度筆記
- 極光筆記|百億級KV儲存在極光的運維實踐之路筆記運維
- Swift 整合友盟推送Swift