Swift - JPush极光推送的使用
来源:互联网 发布:js控制div宽度 编辑:程序博客网 时间:2024/05/22 06:51
@UIApplicationMain
class AppDelegate:UIResponder, UIApplicationDelegate {
var window:UIWindow?
func application(application:UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
//launchOptions: 给注册推送时用 -因为注册推送想在主界面加载出来才询问是否授权
setupJPush(launchOptions)// 配置JPUSH
returntrue
}
/////////////////////////////////////////////////////////////////////////////////////////
/**
配置极光推送
*/
privatefunc setupJPush(launchOptions: [NSObject:AnyObject]?) {
JPUSHService.registerForRemoteNotificationTypes(UIUserNotificationType.Badge.rawValue | UIUserNotificationType.Alert.rawValue |UIUserNotificationType.Sound.rawValue, categories:nil)
JPUSHService.setupWithOption(launchOptions, appKey:JPUSH_APP_KEY, channel: JPUSH_CHANNEL, apsForProduction:JPUSH_IS_PRODUCTION)
JPUSHService.crashLogON()
// 延迟发送通知(app被杀死进程后收到通知,然后通过点击通知打开app在这个方法中发送通知)
performSelector(#selector(sendNotification(_:)), withObject: launchOptions, afterDelay: 1.5)
}
/**
/**
发送通知
*/
@objcprivate func sendNotification(launchOptions: [NSObject:AnyObject]?) {
iflet options = launchOptions {
let userInfo = options[UIApplicationLaunchOptionsRemoteNotificationKey]as? [NSObject :AnyObject]
iflet info = userInfo {
NSNotificationCenter.defaultCenter().postNotificationName("didReceiveRemoteNotificationOfJPush", object: info)
}
}
}
/**
传递deviceToken注册远程通知
*/
func application(application:UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken:NSData) {
JPUSHService.registerDeviceToken(deviceToken)
}
/**
注册远程通知失败
*/
func application(application:UIApplication, didFailToRegisterForRemoteNotificationsWithError error:NSError) {
print("did Fail To Register For Remote Notifications With Error:\(error)")
}
/**
iOS7后接收到远程通知
*/
func application(application:UIApplication, didReceiveRemoteNotification userInfo: [NSObject :AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) ->Void) {
JPUSHService.handleRemoteNotification(userInfo)
completionHandler(UIBackgroundFetchResult.NewData)
if application.applicationState == .Background || application.applicationState == .Inactive {
application.applicationIconBadgeNumber =0
NSNotificationCenter.defaultCenter().postNotificationName("didReceiveRemoteNotificationOfJPush", object: userInfo)
} elseif application.applicationState == .Active {
application.applicationIconBadgeNumber =0
let message = userInfo["aps"]!["alert"]as! String
let alertC =UIAlertController(title:"收到新的消息", message: message, preferredStyle:UIAlertControllerStyle.Alert)
let confrimAction =UIAlertAction(title: "查看", style:UIAlertActionStyle.Destructive, handler: { (action)in
NSNotificationCenter.defaultCenter().postNotificationName("didReceiveRemoteNotificationOfJPush", object: userInfo)
})
let cancelAction =UIAlertAction(title: "忽略", style:UIAlertActionStyle.Default, handler: { (action)in
})
alertC.addAction(confrimAction)
alertC.addAction(cancelAction)
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(alertC, animated: true, completion:nil)
}
}
/**
接收到本地通知
*/
func application(application:UIApplication, didReceiveLocalNotification notification:UILocalNotification) {
JPUSHService.showLocalNotificationAtFront(notification, identifierKey:nil)
}
func applicationWillResignActive(application:UIApplication) {
}
func applicationDidEnterBackground(application:UIApplication) {
JFNewsDALManager.shareManager.clearCacheData()
}
func applicationWillEnterForeground(application:UIApplication) {
}
func applicationDidBecomeActive(application:UIApplication) {
}
func applicationWillTerminate(application:UIApplication) {
}
}
Swift - JPush极光推送的使用1(配置, 推送测试样例)
(1)APNs 是 Apple Push Notification service 的简称,中文翻译为:苹果推送通知服务。
(2)APNs 允许设备与苹果的推送通知服务器保持常连接状态。当你想发送一个推送通知给某个用户的iPhone上的应用程序时,你可以使用 APNs 发送一个推送消息给目标设备上已安装的某个应用程序。
(3)APNs 也是 iOS 系统里唯一的推送方式。
二, 极光推送(JPush)介绍
(1)极光推送是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上。
(2)推送客户端支持 Android, iOS 两个平台。(iOS下使用APNs推送)
(3)为 JPush Server 上报 Device Token,免除开发者管理 Device Token 的麻烦。
(4)前台运行时,可接收由 JPush 下发的(透传的)自定义消息。
(5)灵活管理接收用户:Tag(标签分组)、Alias(用户别名)、RegistrationID(设备注册ID)
三,使用极光推送的优点
虽然我们可以搭建自己应用服务器,将需要被推送的信息发给APNs。接着由APNs推送到指定的iOS设备上,然后再由设备通知到我们的应用程序,最后设备以通知或者声音的形式通知用户有新的消息。
但使用 JPush SDK 可以更快捷地为 iOS App 增加推送功能,减少集成 APNs 需要的工作量、开发复杂度,也让服务器端向 iOS 设备推送变得更加简单方便。
四,极光推送SDK集成步骤
1、在JPush Portal上创建应用
在 JPush 的管理 Portal 上创建应用并上传 APNs 证书。如果对 APNs 证书不太了解 请参考: iOS 证书设置指南
将 iOS SDK 包解压。下载地址:http://docs.jiguang.cn/resources/
然后把解压后的 lib 子文件夹(包含 JPUSHService.h、jpush-ios-x.x.x.a)添加到你的工程目录中。
#
import
"JPUSHService.h"
5,允许XCode7支持Http传输方法
如果用的是 Xcode7 时,需要在App项目 info.plist 中添加如下配置以支持 http 传输。
<
key
>NSAppTransportSecurity</
key
>
<
dict
>
<
key
>NSAllowsArbitraryLoads</
key
>
<
true
/>
</
dict
>
6,开启Remote notifications
需要在 Xcode 中修改应用的 Capabilities 开启 Remote notifications
import
UIKit
@UIApplicationMain
class
AppDelegate
:
UIResponder
,
UIApplicationDelegate
{
var
window:
UIWindow
?
func
application(application:
UIApplication
,
didFinishLaunchingWithOptions launchOptions: [
NSObject
:
AnyObject
]?)
->
Bool
{
//通知类型(这里将声音、消息、提醒角标都给加上)
let
userSettings =
UIUserNotificationSettings
(forTypes: [.
Badge
, .
Sound
, .
Alert
],
categories:
nil
)
if
((
UIDevice
.currentDevice().systemVersion
as
NSString
).floatValue >= 8.0) {
//可以添加自定义categories
JPUSHService
.registerForRemoteNotificationTypes(userSettings.types.rawValue,
categories:
nil
)
}
else
{
//categories 必须为nil
JPUSHService
.registerForRemoteNotificationTypes(userSettings.types.rawValue,
categories:
nil
)
}
// 启动JPushSDK
JPUSHService
.setupWithOption(
nil
, appKey:
"7b528361738e3709175798fd"
,
channel:
"Publish Channel"
, apsForProduction:
false
)
return
true
}
func
application(application:
UIApplication
,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken:
NSData
) {
//注册 DeviceToken
JPUSHService
.registerDeviceToken(deviceToken)
}
func
application(application:
UIApplication
,
didReceiveRemoteNotification userInfo: [
NSObject
:
AnyObject
],
fetchCompletionHandler completionHandler: (
UIBackgroundFetchResult
) ->
Void
) {
//增加IOS 7的支持
JPUSHService
.handleRemoteNotification(userInfo)
completionHandler(
UIBackgroundFetchResult
.
NewData
)
}
func
application(application:
UIApplication
,
didFailToRegisterForRemoteNotificationsWithError error:
NSError
) {
//可选
NSLog
(
"did Fail To Register For Remote Notifications With Error: \(error)"
)
}
//..........
}
五,推送测试
1,我们将上面配置好的应用编译发布到手机上(使用模拟器无法测试 JPush 推送)
2,第一次运行程序会提示我们是否允许推送通知,选择“好”即可。
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_1268.html
- Swift - JPush极光推送的使用
- jpush极光推送平台的使用
- Android JPush(极光推送)的使用教程
- Android JPush(极光推送)的使用教程
- Android JPush(极光推送)的使用教
- Android JPush(极光推送)的使用教程
- Swift - JPush极光推送的使用(发送自定义消息/通知/别名/tag)
- 极光推送JPush --- 简单使用
- jPush 极光推送的理解
- android 的jpush极光推送
- 使用Jpush(极光推送)实现推送功能
- 关于"极光"APP推送JPUSH的服务器端使用
- 极光推送Jpush之RestAPI使用实例
- JPush极光推送的android实现
- Android JPush的集成 极光推送
- Jpush 极光推送遇到的几个问题
- 极光推送JPush
- 试用JPush极光推送
- Java泛型
- 使用Chrom调试css样式
- Java方法签名
- boost::bind的使用方法
- Xpath语法格式整理
- Swift - JPush极光推送的使用
- Java可变参数
- CSS绘制小三角形/圆形等各种小图标的方法
- Android Studio 离线安装 Gradle 的方法
- 第七周 OJ练习-3
- Java枚举类
- fedora下安装eclipse和pydev配置
- YOLO
- 极光推送的简单使用