文档章节

[一句秒懂]极光推送(激光)

XJDomain
 XJDomain
发布于 2016/03/31 00:19
字数 1282
阅读 539
收藏 5
  1. 学习链接

    http://docs.jpush.io/guideline/ios_guide/ 

  2. 详细步骤:

    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.framework

  • CoreFoundation.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即可了

但是我们现在是可以通过一个方法直接配置的,方法如下:

 

/*!
 * @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传输:

<key>NSAppTransportSecurity</key> 
      <dict> 
  <key>NSAllowsArbitraryLoads</key> 
        <true/> 
    </dict>

 

    - (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;
  }

 

- (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.配置这个地方,不然运行就会有问题


 

7.进入极光中心:https://www.jpush.cn/push/apps/0942889e8d623bf81d7c185a/push/notification/sent/

        选择你的应用-推送-发送通知-完成了(注意只有当你的程序不在前台的时候才会显示通知的哦

 

8.配置证书那一块,我后期会给你们详解的,保证你会一次,永远都会的配置证书的哦!关注我博客以后,到时候会及时提醒到你的哦!

 

9.到时候还给大家一并讲解一下本地推送,超简单超详细!让大家在工作当中不再加班,轻轻松松开发ios,让我们赢取白富美,不在穷屌丝,😄!

 

10:极光配置成功标志:

 

 

10-1:是发送通知不是自定义信息:之前卡在这里,一只收不到通知,害我从头配置一遍

 

10-2:在这个方法里执行,可以让用户在前台app中显示我们推送的消息

// 在这个方法里面打印userinfo数据有两种情况:

1:当用户在后台的时候,我们发送通知,他点击通知消息进入我们app里面,这时候会掉用下面这个方法,打印userinfo的数据出来,可以做一些跳转操作

2:当用户在前台的时候,我们发送通知,可以让用户看到我们的信息,但是也是掉用这个方法,打印userinfo的数据的

疑惑点:当用户在后台看到我们推送的通知消息,但是不是从推送消息哪里进入的话,而是直接从点击app进去的话,这时候是不会调用下面这个方法,也就不打印数据了,自然只能进入首页了,也就不存在跳转不同页面的判断了


- (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];  
    }
}
 userInfo--{
    "_j_msgid" = 3563975788;
    aps =     {
        alert = 7;
        badge = 1;
        sound = default;
    };
}

 

 

 

 

10-3:解决后台里面app上右上角badge数量清空的方法

#pragma mark -  设置小红点,回到后台就会清空推送消息

- (void)applicationWillEnterForeground:(UIApplication *)application {
    [application setApplicationIconBadgeNumber:0];
    [application cancelAllLocalNotifications];
}

 

10-4:程序在没有运行的情况下,也是可以接受通知的, 

 

© 著作权归作者所有

XJDomain
粉丝 15
博文 112
码字总数 44060
作品 0
嘉定
高级程序员
私信 提问
极光推送5大新产品闪耀亮相

  2015 年 11 月 19 日, GITC2015 全球互联网技术大会在北京国家会议中心盛大开幕。 GITC 是目前国内规模最大、资源最成熟的移动互联网技术交流平台。极光推送应邀出席大会,并首次集中展...

极光推送
2015/11/24
58
0
迈绝伦团队工作汇总

项目负责人:余志恒 up_java后台:无 mz_java后台:三个推送功能完成,伦比商城后台功能完善 bwk后台:无 项目负责人:季景胜 up_Android:无 upzg_Android:无 mzqk_Android:极光推送功能完...

风化的骆驼
2017/01/04
4
0
快问快答 | 给你一首歌的时间,极光大奖带回家

你了解极光吗?想认识一下吗?🤔 你懂编程吗?想拓展一下知识面吗?🤓 极光快问快答活动,5 分钟 50 题,考验你的时候到了!💪 眼疾手快懂得多,极光大奖带回家。 🏆 规则: 答题时间...

极小光
2018/12/14
0
0
《极光征文》颁奖 | 恭喜你完成 2019 第一个小目标

极光年度征文活动圆满结束,这是小光陪大家走过的第三个年头,今年,我们收获了数篇优质文章,结识了诸多优秀的创作人,希望未来继续携手同行,共同进步。 感谢诸位的用心创作,感谢诸位对极...

极小光
01/25
0
0
极光开发者服务推出统计产品JAnalytics

  极光以提供更加全面的开发者服务为目标,利用极光推送的数据和网络优势结合更丰富的功能,推出了极光统计(英文:JAnalytics)。至此,极光开发者服务更加丰富、完善了。   极光统计有独...

极光推送
2016/12/19
2.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

如何编写高质量的 JS 函数(1) -- 敲山震虎篇

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/7lCK9cHmunvYlbm7Xi7JxQ 作者:杨昆 一千个读者,有一千个哈姆雷特。 此系列文章将会从函数的执行机制、鲁棒性、函...

vivo互联网技术
52分钟前
5
0
学会这5个Excel技巧,让你拒绝加班

在网上,随处都可以看到Excel技巧,估计已看腻了吧?但下面5个Excel技巧会让你相见恨晚。关键的是它们个个还很实用 图一 技巧1:快速删除边框 有时当我们处理数据需要去掉边框,按Ctrl+Shif...

干货趣分享
今天
11
0
JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
10
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
15
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
3.3K
25

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部