[一句秒懂]极光推送(激光)
2016-03-31 00:00
405 查看
摘要: 详解-激光推送-所有推送sdk都差不多,你会我这个,你就会所有的!
学习链接:
http://docs.jpush.io/guideline/ios_guide/
详细步骤:
1.进入文档-JPush推送应用中心:https://www.jpush.cn/common/apps/
2.创建应用:这一步有两个两个证书:一个是开发推送证书和上架应用推送证书,这两个证书配置后面会详细讲解(容易错误地方)
3.下载SDK,文档也说到(将SDK包解压,在XCode中选择“Add files to 'Your project name'...”,将解压后的lib子文件夹(包含JPUSHService.h、jpush-ios-x.x.x.a)添加到你的工程目录中。)
4.导入必要框架:(
CoreFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
Xcode7需要的是libz.tbd;Xcode7以下版本是libz.dylib
)
5.
但是我们现在是可以通过一个方法直接配置的,方法如下:
5.添加代码:
2.1.0版本开始,API类名为JPUSHService,不再使用原先的APService。
如果用的是Xcode7时,需要在App项目的plist手动加入以下key和值以支持http传输:
6.配置这个地方,不然运行就会有问题
![](http://static.oschina.net/uploads/space/2016/0331/001326_cFQ7_2684046.png)
7.进入极光中心:https://www.jpush.cn/push/apps/0942889e8d623bf81d7c185a/push/notification/sent/
选择你的应用-推送-发送通知-完成了(注意只有当你的程序不在前台的时候才会显示通知的哦)
8.配置证书那一块,我后期会给你们详解的,保证你会一次,永远都会的配置证书的哦!关注我博客以后,到时候会及时提醒到你的哦!
9.到时候还给大家一并讲解一下本地推送,超简单超详细!让大家在工作当中不再加班,轻轻松松开发ios,让我们赢取白富美,不在穷屌丝,😄!
10:极光配置成功标志:
![](http://static.oschina.net/uploads/space/2016/0701/123943_ghH7_2684046.png)
10-1:是发送通知不是自定义信息:之前卡在这里,一只收不到通知,害我从头配置一遍
![](http://static.oschina.net/uploads/space/2016/0701/124218_D2JW_2684046.png)
10-2:在这个方法里执行,可以让用户在前台app中显示我们推送的消息
// 在这个方法里面打印userinfo数据有两种情况:
1:当用户在后台的时候,我们发送通知,他点击通知消息进入我们app里面,这时候会掉用下面这个方法,打印userinfo的数据出来,可以做一些跳转操作
2:当用户在前台的时候,我们发送通知,可以让用户看到我们的信息,但是也是掉用这个方法,打印userinfo的数据的
疑惑点:当用户在后台看到我们推送的通知消息,但是不是从推送消息哪里进入的话,而是直接从点击app进去的话,这时候是不会调用下面这个方法,也就不打印数据了,自然只能进入首页了,也就不存在跳转不同页面的判断了
10-3:解决后台里面app上右上角badge数量清空的方法
10-4:程序在没有运行的情况下,也是可以接受通知的,
学习链接:
http://docs.jpush.io/guideline/ios_guide/
详细步骤:
1.进入文档-JPush推送应用中心:https://www.jpush.cn/common/apps/
2.创建应用:这一步有两个两个证书:一个是开发推送证书和上架应用推送证书,这两个证书配置后面会详细讲解(容易错误地方)
3.下载SDK,文档也说到(将SDK包解压,在XCode中选择“Add files to 'Your project name'...”,将解压后的lib子文件夹(包含JPUSHService.h、jpush-ios-x.x.x.a)添加到你的工程目录中。)
4.导入必要框架:(
必要的框架
CFNetwork.frameworkCoreFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
Xcode7需要的是libz.tbd;Xcode7以下版本是libz.dylib
)
5.
创建并配置PushConfig.plist文件有两种方式:
2.1.0之前版本是通过plist文件配置,这个我就不截图讲解了,只要创建一个plist文件,增加三个字段就可以了,文档上有,一键copy即可了但是我们现在是可以通过一个方法直接配置的,方法如下:
[code=plain]/*! * @abstract 启动SDK * * @param launchingOption 启动参数. * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识. * @param channel 发布渠道. 可选. * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES. * * @discussion 提供SDK启动必须的参数, 来启动 SDK. * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作. */ [JPUSHService setupWithOption:launchOptions appKey:kJPUSHAppKey channel:kJPUSHChannel apsForProduction:isProduction];
5.添加代码:
2.1.0版本开始,API类名为JPUSHService,不再使用原先的APService。
如果用的是Xcode7时,需要在App项目的plist手动加入以下key和值以支持http传输:
[code=plain]<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
[code=plain] - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; // Required if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { //可以添加自定义categories [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil]; } else { //categories 必须为nil [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil]; } // Required //如需兼容旧版本的方式,请依旧使用[JPUSHService setupWithOption:launchOptions]方式初始化和同时使用pushConfig.plist文件声明appKey等配置内容。 [JPUSHService setupWithOption:launchOptions appKey:appKey channel:channel apsForProduction:isProduction]; return YES; }
[code=plain]- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Required [JPUSHService registerDeviceToken:deviceToken]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // Required,For systems with less than or equal to iOS6 [JPUSHService handleRemoteNotification:userInfo]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // IOS 7 Support Required [JPUSHService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); } - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { //Optional NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error); }
6.配置这个地方,不然运行就会有问题
![](http://static.oschina.net/uploads/space/2016/0331/001326_cFQ7_2684046.png)
7.进入极光中心:https://www.jpush.cn/push/apps/0942889e8d623bf81d7c185a/push/notification/sent/
选择你的应用-推送-发送通知-完成了(注意只有当你的程序不在前台的时候才会显示通知的哦)
8.配置证书那一块,我后期会给你们详解的,保证你会一次,永远都会的配置证书的哦!关注我博客以后,到时候会及时提醒到你的哦!
9.到时候还给大家一并讲解一下本地推送,超简单超详细!让大家在工作当中不再加班,轻轻松松开发ios,让我们赢取白富美,不在穷屌丝,😄!
10:极光配置成功标志:
![](http://static.oschina.net/uploads/space/2016/0701/123943_ghH7_2684046.png)
10-1:是发送通知不是自定义信息:之前卡在这里,一只收不到通知,害我从头配置一遍
![](http://static.oschina.net/uploads/space/2016/0701/124218_D2JW_2684046.png)
10-2:在这个方法里执行,可以让用户在前台app中显示我们推送的消息
// 在这个方法里面打印userinfo数据有两种情况:
1:当用户在后台的时候,我们发送通知,他点击通知消息进入我们app里面,这时候会掉用下面这个方法,打印userinfo的数据出来,可以做一些跳转操作
2:当用户在前台的时候,我们发送通知,可以让用户看到我们的信息,但是也是掉用这个方法,打印userinfo的数据的
疑惑点:当用户在后台看到我们推送的通知消息,但是不是从推送消息哪里进入的话,而是直接从点击app进去的话,这时候是不会调用下面这个方法,也就不打印数据了,自然只能进入首页了,也就不存在跳转不同页面的判断了
[code=language-objectivec] - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // IOS 7 Support Required [JPUSHService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); // 应用正处理前台状态下,不会收到推送消息,因此在此处需要额外处理一下 if (application.applicationState == UIApplicationStateActive) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"收到推送消息" message:userInfo[@"aps"][@"alert"] delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil]; [alert show]; } }
[code=language-objectivec] userInfo--{ "_j_msgid" = 3563975788; aps = { alert = 7; badge = 1; sound = default; }; }
10-3:解决后台里面app上右上角badge数量清空的方法
[code=language-objectivec]#pragma mark - 设置小红点,回到后台就会清空推送消息 - (void)applicationWillEnterForeground:(UIApplication *)application { [application setApplicationIconBadgeNumber:0]; [application cancelAllLocalNotifications]; }
10-4:程序在没有运行的情况下,也是可以接受通知的,
相关文章推荐
- .net 通过URL推送POST数据具体实现
- Android中使用WebSocket实现群聊和消息推送功能(不使用WebView)
- iOS推送的那些事
- 通过 Push 来提高移动应用的活跃度 3ff0
- 基于Android移动平台僵尸网络模拟工具设计与实现
- IOS消息推送
- 配置iOS推送通知与推送通知iOS客户端编写实现及推送服务器端编写
- 推送 通知
- 如何解决Backup Exec Remote Agent推送安装失败的问题
- Android 推送技术解析
- 网络营销的精准之道专业网络营销
- 极光推送5大新产品闪耀亮相
- Ajax长链接(模拟推送)
- 极光推送java.lang.UnsatisfiedLinkError:错误的解决
- 把token的<>去掉
- 使用友盟消息推送中遇到的哪些问题--索引(开发者必读)
- iOS(iOS7 iOS6)推送教程(一步一步实现,简单易懂)
- 在 Android 上应用极光推送实现 Push 功能
- Android极光推送入门