1.到极光官网 https://www.jpush.cn/ 下载极光推送SDK。

具体如何集成最好参考官网的文档,以及一些失败的原因。文档非常详细,我也是参考集成的。

2.到极光推送官网注册自己的应用信息,关键是参考官网文档把推送证书p12文件上传好。http://docs.jpush.io/client/ios_tutorials/#ios_1

3.将下载好的SDK解压的文件拖到项目中,并添加一下框架

  • CFNetwork.framework
  • CoreFoundation.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework
  • CoreGraphics.framework
  • Foundation.framework
  • UIKit.framework
  • Security.framework
  • Xcode7需要的是libz.tbd;Xcode7以下版本是libz.dylib

4.可以参考我的其他博客,设置XCode7支持Http传输方法。

5.还需入下图配置下项目

6.在AppDelegate中,导入#import "JPUSHService.h"

建议在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中单独设置一个方法调用,防止和其他的设置混乱
    
    // 极光推送设置
    [self JPush:launchOptions];

7.以下是AppDelegate.m中主要需要实现的代码。包括设置AppKey

  1. - (void)JPush:(NSDictionary *)launchOptions{
  2.  
  3. // 程序未运行时,接收消息启动app
  4. NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
  5. NSLog(@"未运行收到的消息%@",remoteNotification);
  6.  
  7. //#ifdef __IPHONE_8_0
  8. if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
  9. //可以添加自定义categories
  10. [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
  11. UIUserNotificationTypeSound |
  12. UIUserNotificationTypeAlert)
  13. categories:nil];
  14. } else {
  15. //categories 必须为nil
  16. [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
  17. UIRemoteNotificationTypeSound |
  18. UIRemoteNotificationTypeAlert)
  19. categories:nil];
  20. }
  21.  
  22. //#endif
  23. // Required
  24. [JPUSHService setupWithOption:launchOptions appKey:@"ef7**********3d87" channel:@"Publish channel" apsForProduction:YES]; //如需兼容旧版本的方式,请继续使用[JPUSHService setupWithOption:launchOptions]初始化方法和添加pushConfig.plist文件声明AppKey等配置内容。
  25.  
  26. // 开启调试模式debug
  27. [JPUSHService setDebugMode];
  28.  
  29. // 接受自定义消息
  30. NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
  31. [defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kJPFNetworkDidReceiveMessageNotification object:nil];
  32. NSNotificationCenter *defaultCenter1 = [NSNotificationCenter defaultCenter];
  33. [defaultCenter addObserver:self selector:@selector(JPushID:) name:kJPFNetworkDidLoginNotification object:nil];
  34.  
  35. }
  36.  
  37. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
  38.  
  39. // Required
  40. [JPUSHService registerDeviceToken:deviceToken];
  41. NSLog(@"注册的token%@",deviceToken);
  42. }
  43.  
  44. - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
  45.  
  46. //Optional
  47. NSLog(@"注册远程通知失败did Fail To Register For Remote Notifications With Error: %@", error);
  48. }
  49.  
  50. - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
  51.  
  52. NSLog(@"++++本地收到的消息====%@",notification);
  53.  
  54. }
  55.  
  56. // 应程序在前台或后台运行时接收消息
  57. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
  58.  
  59. NSLog(@"获取到的APN推送内容: %@",userInfo);
  60.  
  61. // IOS 7 Support Required
  62. [JPUSHService handleRemoteNotification:userInfo];
  63. completionHandler(UIBackgroundFetchResultNewData);
  64.  
  65. }
  66.  
  67. // 获取极光返回的用户ID
  68. - (void)JPushID:(NSNotification *)notification{
  69.  
  70. NSLog(@"获取到的registrationID===:%@",[JPUSHService registrationID]);
  71.  
  72. }
  73.  
  74. // 通知方法回调:接受自定义消息
  75. - (void)networkDidReceiveMessage:(NSNotification *)notification {
  76. NSDictionary * userInfo = [notification userInfo];
  77. NSString *content = [userInfo valueForKey:@"content"];
  78. NSDictionary *extras = [userInfo valueForKey:@"extras"];
  79. NSString *customizeField1 = [extras valueForKey:@"customizeField1"]; //自定义参数,key是自己定义的
  80. // NSString *JPushID = [];
  81.  
  82. NSLog(@"接收自定义消息:%@",content);
  83.  
  84. }

8.这样可以单独在极光官网测试推送,最好单独获取到的registrationID单个推送测试。

我开始可以内网推送,但走苹果APNS失败,最后还是推送证书的问题。重新做的并上传到极光推送逛网。

iOS开发——极光推送的更多相关文章

  1. iOS开发极光推送显示 开发证书没有通过验证 是否重新上传证书?解决方法

    1.证书密码错误 2证书环境不匹 3导证书时因手误把私钥导出来了,而不是证书 1.当前上传的p12证书密码输入有误: 2. 证书导出的时候展开了证书,把个人私钥导了出来,导证书的时候请不要展开证书: ...

  2. iOS开发 iOS10推送必看

    iOS10更新之后,推送也是做了一些小小的修改,下面我就给大家仔细说说.希望看完我的这篇文章,对大家有所帮助. 一.简单入门篇---看完就可以简单适配完了 相对简单的推送证书以及环境的问题,我就不在这 ...

  3. iOS开发 iOS10推送必看(基础篇)

    iOS10更新之后,推送也是做了一些小小的修改,下面我就给大家仔细说说.希望看完我的这篇文章,对大家有所帮助.   原文链接   一.简单入门篇---看完就可以简单适配完了相对简单的推送证书以及环境的 ...

  4. iOS开发——消息推送跳转

    项目开发用集成是极光推送JPush     这里主要是消息推送过来处理对应界面跳转          同时看到两篇写的不错的相关博客分享一下:      http://www.jianshu.com/ ...

  5. iOS开发 iOS10推送必看(基础篇)-转

    iOS10更新之后,推送也是做了一些小小的修改,下面我就给大家仔细说说.希望看完我的这篇文章,对大家有所帮助. 一.简单入门篇---看完就可以简单适配完了 相对简单的推送证书以及环境的问题,我就不在这 ...

  6. iOS 集成极光推送

    最近极光推送更新到V3版本之后,推送又不成功!配合服务器联调了半天,发现是服务器环境配置有问题. 想着就把极光推送的步骤给记录下来. 一.配置push证书 这个可以到极光文档里写,很详细 二.导入必要 ...

  7. iOS:极光推送控制器跳转

    在前面已经做完了极光消息的推送,那么有消息了,如何跳转到需要的控制器呢?其实,主要还是在userInfo这个消息里面做判断来处理,具体如下: 下面这两个是远程推送时接收消息的方法,这是应用程序提供的方 ...

  8. 制作IOS 后台极光推送时,遇到的小问题

    推送广义上分为两种, 一种是  程序在前台的时候,不想在任务栏里面显示通知,直接在app中进行某种操作.这个叫做自定义消息.这个是在前台时,app与极光后台建立了一个长链接. 另一种是  程序处于前. ...

  9. iOS开发,推送消息 steps

    概述:推送过程简介 一.App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请. ...

随机推荐

  1. hdoj 2046 骨牌铺方格

    骨牌铺方格 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  2. 网络操作与AFNetworking

    众所周知,苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐.操作起来很不方便.不仅要做区分各种请求设置各种不同的参数,而且还要经常在多线程里操作,同时还要对请求与返回的数据做各 ...

  3. 学习和理解C#中的事件

    注:本文系学习笔记. 上一篇文章记录了我对C#中委托的理解.委托实际上是一种类型.可以将一个或多个方法绑定到委托上面,调用委托时,一次执行委托上面绑定的方法.本文要讲述的事件实际上和委托有很深的“感情 ...

  4. JavaScript要点(十) HTML DOM - 改变 HTML

    HTML DOM 允许 JavaScript 改变 HTML 元素的内容. A.改变 HTML 输出流 JavaScript 能够创建动态的 HTML 内容: 今天的日期是: Thu Oct 13 2 ...

  5. 好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题

    用ssh登录一个机器(换过ip地址),提示输入yes后,屏幕不断出现y,只有按ctrl + c结束 错误是:The authenticity of host 192.168.0.xxx can't b ...

  6. 人工智能-有限状态机(FSM)的学习

    首先声明:此文源于本人最近学习的一本书 <游戏人工智能编程案例精粹> FSM的定义: 一个有限状态机是一个设备,或是一个设备模型,具有有限数量的状态,它可以在任何给定的时间根据输入进行操作 ...

  7. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...

  8. appDelegate中的委托协议方法以及使用观察者模式获取其触发方法

    //当应用程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,比如来电 - (void)applicationWillResignActive:(UIApplication *)appli ...

  9. HDU 3452 Bonsai(网络流之最小割)

    题目地址:HDU 3452 最小割水题. 源点为根节点.再另设一汇点,汇点与叶子连边. 对叶子结点的推断是看度数是否为1. 代码例如以下: #include <iostream> #inc ...

  10. 网络防火墙实战-基于pfsense(2)

    安装虚拟机 本博客所有内容是原创,如果转载请注明来源 http://blog.csdn.net/myhaspl/