博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios -- 极光推送《1》
阅读量:5009 次
发布时间:2019-06-12

本文共 3509 字,大约阅读时间需要 11 分钟。

昨天公司项目要加入远程推送功能,自己做显然会很麻烦,所以用了极光的远程推送,下面我会讲如何制作推送证书并使用极光推送进行远程推送.

1

先讲讲怎么下载推送证书吧(前面的很简单要是知道的可以直接往下滑,简书竟然不能页内跳转…)

网上下载推送证书的教程一般都是几年前的,现在下载推送证书很简单

首先进入

  • 点击Member Center

1

  • 登录后点击Certificates,Identifiers & Profiles

1

  • 任意点击一个

1

  • 创建App ID

1

  • App ID的名字可以随便取,Bundle ID一定要注意,要推送的App项目中的Bundle ID一定要是这个Bundle ID

1

  • App Services可以现在勾上Push Notifications,也可以后面再改,然后点继续

1

  • 提交(我之前勾选了Push Notifications,所有它现在是橙色的,不然应该是灰色)

1

  • 出来后点击你刚创建的App ID,然后点Edit

1

1

  • 创建开发环境和生产环境的证书

1

这里讲一下什么是开发环境和生产环境:你用Xcode编译安装的就是开发环境,用二维码或者App Store下载的就是生产环境.

- 这里点继续后会发现需要你上传一个证书

1

现在我们来制作这个证书

  • 打开MAC自带的钥匙串访问(Launchpad->其他->钥匙串访问)

  • 点开后左上角打开证书助手,从证书颁发机构请求证书

1

  • 注意一定要存储到磁盘

1

  • 然后存储就行了,存在哪都可以

  • 把刚才存储的证书上传了

1

  • 下载下来,点击Done,又回跳回到开始的界面,然后还是选择你创建的App ID然后Edit,开发环境和生产环境推送证书的创建流程是一样的,自己按着步骤就能把证书全部创建并下载成功.

1

  • 这时候Push Notifications应该是绿的了 1

  • 打开钥匙串访问,你会发现你多了这两个证书

1

  • 右键分别导出它们

1

  • 设置密码

1

导出成功后,你就能看到它们了,记得命好名(最好用英文)

推送证书的制作到这就结束了,下面讲怎么使用极光推送进行远程推送

怎么使用极光推送进行远程推送

  • 在极光官网注册极光推送

  • 创建一个应用

  • 在应用配置中导入两个证书(我这是已经验证了的,不然就是让你上传证书的按钮)Bundle ID是导入证书后自动出现的,证书最好一个一个上传不然可能会出现验证失败的问题.

1

- 然后下载

- 把SDK中的Lib文件夹导入你的项目中,记得勾选Copy

1

  • 在Build Phases中导入以下库

1

  • 修改Capabilities

打开远程推送

1

打开Background Modes

1

修改Bundle ID 以及选择Team

1

下面便是代码部分

在Appdelegate.m中导入头文件#import “JPUSHService.h”

在didFinishLaunchingWithOptions方法中写入以下代码,有的地方要按你自己的信息填

// Requiredif ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {    //可以添加自定义categories    [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |UIUserNotificationTypeSound |UIUserNotificationTypeAlert)categories:nil];} else {    //categories 必须为nil    [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert)categories:nil];}[JPUSHService setupWithOption:launchOptions appKey:你的appKey(字符串),在极光的应用详情中可以看到" channel:@""(这个不填就行) apsForProduction:这个值生产环境为YES,开发环境为NO(BOOL值)];

 

创建

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

方法中注册设备(去掉这个)

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {    //这个方法是设置别名和tag 可省    // [JPUSHService setTags:nil alias:@"WzxJiang" fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {    //        NSLog(@"rescode: %d, \ntags: %@, \nalias: %@\n", iResCode, iTags , iAlias);    //   }];    // Required    [JPUSHService registerDeviceToken:deviceToken];}

 

创建

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler:

App在后台时收到推送时的处理

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {    //iOS 7及之后才能用,现在没人适配iOS6了吧...    // IOS 7 Support Required     [JPUSHService handleRemoteNotification:userInfo];    completionHandler(UIBackgroundFetchResultNewData);}

 

在applicationWillEnterForeground方法(App即将进入前台)中将小红点清除

- (void)applicationWillEnterForeground:(UIApplication *)application {    NSLog(@"进入前台");    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;}

 

创建

didFailToRegisterForRemoteNotificationsWithError

方法,处理接收推送错误的情况(一般不会…)

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {    //Optional    NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);}

 

  • 代码都已经弄好了,现在推送以下,(注意只能是真机调试)

  • 在极光上点击发送通知,注意是开发环境

1

  • 然后你就能收到推送了
    1

 

转载于:https://www.cnblogs.com/shenlaiyaoshi/p/7285250.html

你可能感兴趣的文章
linux时间同步ntp服务的安装与配置
查看>>
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法...
查看>>
网络编程-socket并发-粘包问题
查看>>
JSP 技术(二)--详解
查看>>
python 中安装pandas
查看>>
Hibernate 的<generator class="native"></generator>的不同属性含义
查看>>
linux修改root账户的用户名所得的教训
查看>>
【LeetCode】Flatten Binary Tree to Linked List
查看>>
读后感-浮生六纪
查看>>
执行指定路径的程序文件
查看>>
Leetcode-950 Reveal Cards In Increasing Order(按递增顺序显示卡牌)
查看>>
[Linux] 在 Linux CLI 使用 ssh-keygen 生成 RSA 密钥
查看>>
14款下载有用脚本的超酷网站
查看>>
LXC-Linux Containers介绍
查看>>
7.31实习培训日志-docker sql
查看>>
c#中使用servicestackredis操作redis
查看>>
ios app 真机crash报告分析
查看>>
CRC标准以及简记式
查看>>
SEO搜索引擎
查看>>
关于本地使用tomcat部署web应用,浏览器自动跳转为https的问题
查看>>