Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS集成极光推送iOS集成极光推送

iOS集成极光推送iOS集成极光推送

作者头像
hrscy
发布于 2018-08-30 04:20:57
发布于 2018-08-30 04:20:57
3.2K00
代码可运行
举报
文章被收录于专栏:hrscyhrscy
运行总次数:0
代码可运行

iOS集成极光推送

一、配置APNs

苹果APNs(英文全称:Apple Push Notification Service)

1.配置开发证书

apns_1.png

apns_2.png

apns_4.png

apns_5.png

apns_6.png

apns_7.png

apns_8.png

apns_9.png

apns_10.png

apns_11.png

![Uploading apns_13_803165.png . . .]

2.配置生产证书

和配置开发证书的流程相同。

3.将配置好的证书导出为 .p12 文件

apns_13.png

apns_14.png

apns_15.png

一、注册极光推送帐号

可登录 极光推送官网 注册帐号。

注册成功后进入控制台

apns_12.png

apns_16.png

二、集成极光推送SDK

sdk地址

我使用的是JPush-iOS-SDK-2.1.0。下载的文件里有个pdf文件iOS+SDK+Integration+Guide.pdf,介绍了集成极光推送的详细代码。

在工程文件中,做如下设置:

apns_17.png

下面是我写的代码:

AppDelegate.m文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //设置appKey
    [JPushConfig registerJPush:launchOptions];
    return YES;
}


#pragma mark 修改通知处理函数
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler {
    //推送消息携带 content-available: 1 是Background 运行的必须参数,如果不携带此字段则与iOS7 之前版本的普通推送一样。
    //清空角标
    [JPUSHService resetBadge];
    if (!userInfo) {
        completionHandler(UIBackgroundFetchResultNoData);
        return ;
    }
    completionHandler(UIBackgroundFetchResultNewData);
    //根据服务器设置的 userInfo 的格式,进行解析
}

// Required
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [JPUSHService registerDeviceToken:deviceToken];
}

// Required
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    [JPUSHService handleRemoteNotification:userInfo];
    application.applicationIconBadgeNumber = 0;
}

- (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification {
    [JPUSHService showLocalNotificationAtFront:notification identifierKey:nil];
}

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
}

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

JPushConfig.m文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** 注册 JPush */
+(void)registerJPush:(NSDictionary *)launchOptions {
    // Required
    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
        //可以添加自定义categories
        [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
                                                          UIUserNotificationTypeSound |
                                                          UIUserNotificationTypeAlert)
                                              categories:nil];
    } else {
        //categories 必须为nil
        [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
                                                          UIUserNotificationTypeBadge |
                                                          UIUserNotificationTypeBadge)
                                              categories:nil];
    }
    NSString *appKey = @"极光推送生成的KEY";
    NSString *channel = @"App Store";//发布渠道,可以随便定义
    BOOL isProduction = YES;//这个要根据极光推送控制台里设置的是开发环境还是生产环境
    //Required
    [JPUSHService setupWithOption:launchOptions
                           appKey:appKey
                          channel:channel
                 apsForProduction:isProduction];
}

说明: isProduction 这个参数,当时询问极光工作人员的时候,他们说这个参数是保留参数,不起作用,但是发布到 app store 上的 app 最好还是设置为 YES 吧。

收到通知消息后,在AppDelegate.m跳转到指定界面的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    UIViewController *vc = [[UIViewController alloc] init];
    [self.window.rootViewController presentViewController:vc animated:YES completion:nil];

三、关于极光推送收不到后台推送的通知的问题

首先,要了解一下 iOS的开发环境和生产环境。

我的情况是这样,代码里设置的是生产环境,由于公司要求使用 alias 来区分需要推送通知的用户,再使用 xcode 测试的时候,使用极光推送控制台向指定 alias 推送通知,在极光推送控制台设置 iOS 的环境为生产环境,但是始终收不到推送的通知,后改为开发环境,马上就可以收到推送的通知,当时感到很奇怪,为什么开发环境能收到通知,而生产环境收不到通知呢?

以至于后来 app 发布到 app store 之后,还是不能收到后台推送的通知。

解决办法如下:

  1. 按照我上面的方式,正确配置开发环境证书和生产环境证书。

2.需要注意的地方就是,app stroe 上线的 app 使用的证书都是生产环境证书,没有发布到 app store 的 app 使用的都是开发环境证书。

3.如果想测试线上环境,也不是没有办法,苹果提供配置一种模拟线上发布的环境,如下图:

模拟线上环境

然后点击下一步,选择发布证书,下一步选择 Ad Hoc 的 provision,就可以了打一个模拟线上测试的包了,这个包允许直接安装到手机,可以使用 itunes 或者 pp 助手等工具进行安装,就可以真实用户的操作,包括测试推送。

4.如果推送使用的是自己的后台,需要告知,后台设置 iOS 的环境为生产环境,才能收到后台推送的通知,否则是收不到通知的,被这个坑了好长时间。。。?

以上是我在配置极光推送的时候遇到的一些问题,记录下来,希望遇到类似问题的小伙伴,可以帮助你解决遇到的问题。?

至此极光推送告一段落。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.04.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
学习Git(一)起步
什么是Git 在Git官网上找到这样一段描述 Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. 重点是 version control system (VCS),翻译过来也就是 版本控制系统。(Pycharm中有一个) 关于版本控制 版本控制是一种记
小歪
2018/04/04
7290
学习Git(一)起步
Git入门学习到进阶1
描述:Git是目前世界上最先进的分布式版本控制系统(没有之一),如下面的Git生态化流程;
全栈工程师修炼指南
2022/09/28
6470
Git入门学习到进阶1
Git的初步学习
前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 效果 接下来看看,一家公司的基本流程图
达达前端
2019/07/04
5140
Git最全系列教程(一)
本章介绍开始使用 Git 前的相关知识。我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作。读完本章,你就会明白为什么 Git 会如此流行,为什么你应该立即开始使用它。
兔云小新LM
2019/07/24
7520
Git最全系列教程(一)
Git Pro深入浅出(一)
什么是“版本控制”?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 版本控制系统(VCS)应用而生。有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。
奋飛
2019/08/15
1.1K0
Git 学习路线图:为什么每个开发者都应该了解它?
“ 在当今的开发环境中,版本控制系统是协作开发的核心工具,而 Git 以其强大的分布式特性脱颖而出。本文将深入探讨 Git 的基本概念、实际应用以及其与传统集中式版本控制系统 SVN 的主要区别。还将提供在各种操作系统上安装和配置 Git 的详细指南。”
Lion 莱恩呀
2024/07/26
2540
Git 学习路线图:为什么每个开发者都应该了解它?
跟着小程一起聊聊GIT那点事
同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。
小程故事多
2018/08/22
5680
跟着小程一起聊聊GIT那点事
Git基础知识(一)
这是一个由 40 个十六进制字符(0-9 和 a-f)组 成字符串,基于 Git 中文件的内容或目录结构计算出来。 SHA-1 哈希看起来是这样:
zx钟
2019/07/19
5720
玩不转的 GitHub (一)
写这篇并不是详细的去写一下关于版本控制和 Git 使用的详细教程,而是整理一下 Git 入门、GitHub 常规使用、Gitee 常规使用以及在工作中常见的一些操作。
双鬼带单
2021/07/20
5240
Git 最全教程
其它大部分系统以文件变更列表的方式存储信息,这类系统(CVS、Subversion等)将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异 (基于差异的版本控制)。
Jasonangel
2022/10/25
1.5K0
Git 最全教程
Git 很难么?带你从头到尾捋一遍,不信你学不会!
对于Git,相信大多数程序员并不会感到陌生。但是运用自如可不是一日之功,这可不,上次面阿里,就卡在了对 Git的各种理论理解与实际应用上。
民工哥
2022/04/08
6680
Git 很难么?带你从头到尾捋一遍,不信你学不会!
关于Git这一篇就够了
git基本组成框架:Workspace、Index / Stage、Repository、Remote
全栈程序员站长
2022/08/15
7620
关于Git这一篇就够了
Git 版本管理工具(一)
Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git  —— The stupid content tracker(傻瓜式的内容跟踪器)
阳光岛主
2019/02/19
2.1K0
Git入门学习到进阶1
描述:Git是目前世界上最先进的分布式版本控制系统(没有之一),如下面的Git生态化流程;
全栈工程师修炼指南
2020/10/23
7090
Git入门学习到进阶1
浅谈基于 Git 的版本控制工作流
因此,在本文中,我们就从「[版本控制简史」出发,揭开「基于 Git 的版本控制工作流」的神秘面纱。
CG国斌
2020/07/16
1.4K0
开发必用的 Git,你使用明白了吗?
不会Git操作的伙伴,轻则写不了代码,重则误操作搞丢自己的代码或者干掉别人的代码。 因为进入公司后,就不只是你一个人在一个工程上写代码,而是所有这个项目组的伙伴都需要在这个工程上写代码,大家要在统一的Git的规范完成代码开发和提交。—— 🤨 不信的话,进入公司乱删个Git分支或者随便任何一个分支提交代码试试。
小傅哥
2024/09/06
1930
开发必用的 Git,你使用明白了吗?
Git详解及 github与gitlab使用
惨绿少年
2017/12/27
3.3K1
Git详解及 github与gitlab使用
如何做好一份技术文档:超详细攻略
在技术的浩瀚海洋中,一份优秀的技术文档宛如精准的航海图。它是知识传承的载体,是团队协作的桥梁,更是产品成功的幕后英雄。技术文档不仅仅是对技术细节的记录,更是连接开发者与用户、连接过去与未来的重要纽带。
LucianaiB
2025/06/09
8390
MacBook Pro 安装、配置、升级 Git 详细教程与方法大全
Git 是当前最流行的分布式版本控制系统(Distributed Version Control System,DVCS),几乎所有与软件开发或文档管理相关的项目都离不开它。尤其是对于开发者而言,了解如何在 macOS(MacBook Pro)平台上安装、配置并及时升级 Git 版本,是顺利开展协作开发的基础。本文将全面讲解从安装到升级到常见问题的解决方案,力求帮助你扫清概念困惑、明确实操步骤。
猫头虎
2025/06/08
5880
构建安全可靠的系统:第十六章到第二十章
尽管不可能为可能扰乱您组织的每种情况制定计划,但作为综合灾难规划策略的第一步,正如第十六章中所讨论的那样,是务实和可行的。这些步骤包括建立一个事件响应团队,在事件发生之前为系统和人员进行预置,并测试系统和响应计划——这些准备步骤也将有助于为危机管理做好准备,这是第十七章的主题。在处理安全危机时,具有各种技能和角色的人员需要能够有效地合作和沟通,以保持系统运行。
ApacheCN_飞龙
2024/01/11
3360
构建安全可靠的系统:第十六章到第二十章
相关推荐
学习Git(一)起步
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验