前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS集成极光推送iOS集成极光推送

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

作者头像
hrscy
发布于 2018-08-30 04:20:57
发布于 2018-08-30 04:20:57
3.1K00
代码可运行
举报
文章被收录于专栏: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
推送-JPush(极光推送)的使用
推送服务可以说是所有 App 的标配,不论是哪种类型的 App,推送都从很大程度上决定了 App 的 打开率、使用率、存活率 。因此,熟知并掌握推送原理及方法,对每一个开发者来说都是必备技能,对每一个依赖 App 的公司来说都至关重要。本文主要讨论项目中使用极光推送来实现推送业务。
進无尽
2018/09/12
6.8K1
推送-JPush(极光推送)的使用
iOS初步集成极光推送后你还要做这些事
当我们把推送证书配置好再把极光SDK拖入项目配置,然后注册极光推送,完成代理,这样没有太多意外你就能收到消息了,但是我们都知道还需要做一些处理,都是哪些呢? ● 当收到消息时,app在前台如何处理 ● 在后台如何处理? ● 未启动如何处理? ● 当app在前台收到消息如何跳转到指定页面? ● 在后台收到系统通知,点击通知栏又如何跳转指定页面? ● 未启动时点击通知栏又如何跳转指定页面? ● 收到自定义通知如何显示? ● 怎么给指定用户发送消息? ● 当有多个类型通知的时候,怎么拿到服务
Raindew
2018/06/14
3K0
iOS 推送手机消息背后的技术
作者:allenzzhao,腾讯  IEG运营开发工程师 消息推送我们几乎每天都会用到,但你知道iOS中的消息推送是如何实现的吗?本文将从推送权限申请,到本地和远程消息推送,再到App对推送消息的处理等多个步骤,详细介绍iOS中消息推送的工作流程。 1、概述 消息推送是一种App向用户传递信息的重要方式,无论App是否正在运行,只要用户打开了通知权限就能够收到推送消息。开发者通过调用iOS系统方法就可以发起本地消息推送,例如我们最常见的闹钟应用,App能够根据本地存储的闹钟信息直接发起本地通知,因此即
腾讯技术工程官方号
2020/10/27
4.2K1
ios入门之消息推送
前言 在去年的苹果大会上,苹果带来的iOS 10 系统中将之前繁杂的推送通知统一成UserNotifications.framework 来集中管理和使用通知功能,还增加一些实用的功能——撤回单条通知、更新已展示通知、中途修改通知内容、在通知中显示多媒体资源、自定义UI等功能。 那么在ios10之前,ios的消息推送是怎么分类的呢? ios 10之前 在ios之前,iOS推送分为Local Notifications(本地推送) 和 Remote Notifications(远程推送)。 本地推送 不需
xiangzhihong
2018/02/06
2.1K0
ios入门之消息推送
iOS推送如何实现的?
从图中可以很清楚的看出来推送的原理主要分为以下几步: 1.由App向iOS设备发送一个注册通知,用户需要同意系统发送推送。 2.iOS向APNs远程推送服务器发送App的Bundle Id和设备的UDID。 3.APNs根据设备的UDID和App的Bundle Id生成deviceToken再发回给App。 4.App再将deviceToken发送给远程推送服务器(自己的服务器), 由服务器保存在数据库中。 5.当自己的服务器想发送推送时, 在远程推送服务器中输入要发送的消息并选择发给哪些用户的deviceToken,由远程推送服务器发送给APNs。 6.APNs根据deviceToken发送给对应的用户。 · APNs 服务器就是苹果专门做远程推送的服务器。 ·deviceToken是由APNs生成的一个专门找到你某个手机上的App的一个标识码。 · deviceToken 可能会变,如果你更改了你项目的bundle Identifier或者APNs服务器更新了可能会变。
赵哥窟
2020/06/16
1.1K0
iOS 远程推送概念相关准备工作代码实现:(前提:确保bundleID和网站的配置一样)AppDelegate中的全部代码
概念相关 1.什么是远程推送通知? 顾名思义,就是从远程服务器推送给客户端的通知(需要联网) 远程推送服务,又称为APNs(Apple Push Notification Services) 2.为什么需要远程推送通知? 传统获取数据的局限性:只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容 远程推送通知可以解决以上问题:不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知 3.所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接 什么是长连接?
用户2141756
2018/05/18
2K0
APNs推送
即时通讯中需要对离线消息进行接收,此时就需要离线推送即当应用没有退出登录的情况下,被系统或者用户杀掉进程仍然能收到IMSDK消息提醒。云通讯iOS客户端采用的是APNs推送服务,以下提供整个处理流程及参考代码。
腾讯视频云-Zachary
2019/09/07
2.3K0
APNs推送
iOS开发--本地通知与远程通知
1、NSNotification是系统内部发出通知,一般用于内部事件的监听,或者状态的改变等等,是不可见的 2、本地通知与远程通知是可见的,主要用于告知用户或者发送一些App的内容更新,推送一些相关的消息,让用户知道App内部发生了什么事情。
孙寅
2020/06/02
3.5K0
iOS集成友盟推送
#2. Enable Push NotificationSerivice, 并创建和下载开发/发布推送证书
周希
2019/10/15
2.3K0
关于JPush(极光推送)那些事
可以看出,JPush iOS Push 包括 2 个部分,APNs 推送(代理)与 JPush 应用内消息。 红色部分是 APNs 推送,JPush 代理开发者的应用(需要基于开发者提供的应用证书),向苹果 APNs 服务器推送。由 APNs Server 推送到 iOS 设备上。 蓝色部分是 JPush 应用内推送部分,即 App 启动时,内嵌的 JPush SDK 会开启长连接到 JPush Server,从而 JPush Server 可以推送消息到 App 里
CC老师
2023/03/23
1.7K0
关于JPush(极光推送)那些事
iOS 10 消息推送(UserNotifications)秘籍总结
单独整理消息通知的内容,但是因为工(就)作(是)的(很)事(懒)没有更新文章,违背了自己的学习的初衷。因为互联网一定要有危机意识,说不定眼一睁,我们就欧了 。
java爱好者
2019/06/19
2.9K0
推送-远程通知推送教程
本文翻译自:raywenderlich.com,原文作者:Jack Wu,译者:JMStack
進无尽
2018/09/12
4.3K0
推送-远程通知推送教程
个推你应该这样用的
前言:     说到这个远程推送,大家知道的应该都挺多的,但用到的估计极光和个推要占一很大部分,这篇博客重点说的就是个推的使用,个推官网的链接在这里,它的集成是比较方便的,你可以直接使用Cocoapods集成,待会再下面命令行也会给大家分享出来,这我们还会提到的有它的一个推送流程,还有SDK的一些使用以及在使用的过程中我们需要注意的地方:     先看看个推的推送流程图: image.png     集成中建议利用Cocoapods集成,建议还是集成这个无IDFA版本,下面是命令行,至于为什么建议集成这个
Mr.RisingSun
2018/01/12
2.1K0
个推你应该这样用的
推送-iOS本地通知
从 iOS 10 新增的 UserNotifications Framework 可以发现,Apple 整合了原有散乱的 API,并且增加了许多强大的功能。以 Apple 官方的角度来看,也必然是相当重视推送服务对 App 的影响、以及对 Apple iOS 生态圈长远发展的影响。
進无尽
2018/09/12
7.7K1
推送-iOS本地通知
iOS 10前后两种本地通知
远程通知是指服务器发出的通知,通过苹果的推送然后到达用户设备。本地通知是指不通过网络,直接安装应用后就可以接到通知了,典型的例子是日历、待办、闹钟等应用。
Cloudox
2021/11/23
1.3K0
iOS 10前后两种本地通知
iOS 开发之实现 App 消息推送(最新)[通俗易懂]
好久没有写过博客啦,今天就由本菜鸟给大家做一个简单的IOSApp消息推送教程吧!一切从0开始,包括XCode6, IOS8, 以及苹果开发者中心最新如何注册应用,申请证书以及下载配置概要文件,相信很多刚开始接触ios的人会很想了解一下。(ps:网上看了一下虽然有很多讲述推送的好教程,我也是看着一步步学会的,但是这些教程的时间都是去年或者更早时期的,对引导新手来说不是很合适)
全栈程序员站长
2022/08/22
5.5K0
iOS 开发之实现 App 消息推送(最新)[通俗易懂]
【IOS开发进阶系列】远程消息推送专题
        Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器。
江中散人_Jun
2023/10/16
9320
【IOS开发进阶系列】远程消息推送专题
iOS 本地推送概念步骤:属性:点击通知跳到指定控制器界面快捷回复功能(iOS 8以后可用), category 属性的使用方法
概念 1.推送通知有5种不同的呈现效果 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出一个UIAlertView(显示具体内容) 在锁屏界面显示一块横幅(锁屏状态下,显示具体内容) 更新app图标的数字(说明新内容的数量) 播放音效(提醒作用) 2.用户也可以决定是否要开启以下4个功能: 显示App图标数字 播放音效 锁屏显示 显示在“通知中心” 3、注意: 发送推送通知时,如果程序正在前台执行,那么推送通知就不会被呈现出来,但是微信在前台的时候也能推送消息,方法是:创建一个view,仿造系统消息通
用户2141756
2018/05/18
2.7K0
搞定iOS推送,看这一篇就够了 顶
一次偶然的机会,公司的项目要用到推送,我自己本来就很懒,不愿意去弄整套APNS的流程,刚好之前跟朋友聊起过他们的产品中集成了个推的Android推送,说是体验还可以,那这次我就试一下他们的iOS推送。于是抱着试一试的心态,我先建个demo,试着去集成一下个推iOS推送SDK,摸索着完成了整个流程,言归正传,直接上硬菜!
个推君
2019/08/29
1.9K0
搞定iOS推送,看这一篇就够了
                                                                            顶
iOS 推送(本地推送)推送介绍总结使用步骤其他常用API
而在编程中,看过不如敲过,敲过不如理解,而很多代码的精髓要义,都是在我们写过很多遍之后就自然而然的理解了。
Haley_Wong
2018/08/22
1.7K0
iOS 推送(本地推送)推送介绍总结使用步骤其他常用API
推荐阅读
相关推荐
推送-JPush(极光推送)的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验