极光推送

项目中需要设备报警的推送

因此需要极光推送

1.注册一个极光的账号

2.注册一个APNS推送证书

这两步都做过了。因此下载推送证书,双击用钥匙串打开

导出 .p12 证书文件 并设置密码

极光推送_第1张图片

第一个选择apns development 证书,选择上传
新版本是反过来的,开发证书和生产证书。。。

极光推送_第2张图片

发现只做了开发证书 没有做生产证书

那我自己添加
极光推送_第3张图片

在这里选择你自己那个app的证书点击编辑

极光推送_第4张图片

是少了生产证书 ,添加就好了

关于创建证书签名请求(CSR)

要手动生成证书,您需要从Mac中获取证书签名请求(CSR)文件。要创建CSR文件,请按照以下说明使用Keychain Access创建一个。
创建CSR文件。

在Mac上的Applications文件夹中,打开Utilities文件夹并启动Keychain Access。

在钥匙串访问下拉菜单中,选择钥匙串访问>证书助理>从证书颁发机构请求证书。

在“证书信息”窗口中,输入以下信息:
    在“用户电子邮件地址”字段中,输入您的电子邮件地址。
    在“公用名称”字段中,为您的私钥创建一个名称(例如,John Doe Dev Key)。
    “CA电子邮件地址”字段应为空。
    在“请求是”组中,选择“保存到磁盘”选项。
单击Keychain Access中的Continue继续完成CSR生成过程。

创建CSR文件时,会自动生成公钥和私钥对。您的私钥存储在您的计算机上。在Mac上,它默认存储在登录钥匙串中,可以在“钥匙”类别的钥匙串访问应用程序中查看。您所要求的证书是密钥对的公开一半。
上传CSR文件

选择保存在Mac上的.certSigningRequest文件。

这段话的意思是要你本地钥匙串->证书助理->从证书颁发机构请求证书 保存到本地 .certSigningRequest文件 然后上传到这里

再点继续,就创建完成了。接下来就可以下载证书并导出
p12文件给极光了。

上传完成以后就可以开始验证了

极光推送_第5张图片

接下来就是cocopod 了

pod ‘JPush’
极光推送_第6张图片

添加plist http字段

    <key>NSAppTransportSecuritykey>
    <dict>
        <key>NSAllowsArbitraryLoadskey>
        <true/>
        <key>NSExceptionDomainskey>
        <dict>
            <key>jpush.comkey>
            <dict>
                <key>NSIncludesSubdomainskey>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoadskey>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersionkey>
                <string>TLSv1.1string>
            dict>
        dict>
    dict>

appdelegate 添加对应的内存,真机调试

2017-07-12 15:49:06.487271+0800 JPushTest[497:106633]  | JIGUANG | I - [JIGUANGService] 
--------------------------- JPush Log ----------------------------
--------------------JPush SDK Version:3.0.3--build:34----------
--------------------JCore Lib Version:1.1.2--build:18----------
-----------------AppKey: ----------------
----------------------------------------------------------------
2017-07-12 15:49:06.492023+0800 JPushTest[497:106633]  | JIGUANG | I - [JIGUANGClientController] Action - jpush setup
2017-07-12 15:49:06.493862+0800 JPushTest[497:106633]  | JIGUANG | I - [JIGUANGClientController] Action - setup
2017-07-12 15:49:08.681652+0800 JPushTest[497:106633]  | JIGUANG | W - [JIGUANGClientController] Not get deviceToken yet. Maybe: your certificate not configured APNs? or current network is not so good so APNs registration failed?  or there is no APNs register code? Please refer to JPush docs.
2017-07-12 15:49:15.895618+0800 JPushTest[497:106633]  | JIGUANG | I - [JIGUANGSessionController] connecting with coreAddr 114.67.46.69,port 7004
2017-07-12 15:49:16.128520+0800 JPushTest[497:106633]  | JIGUANG | I - [JIGUANGRegistration] 
----- register info -----
Appkey: 
token: 
2017-07-12 15:49:16.629764+0800 JPushTest[497:106634]  | JIGUANG | I - [JIGUANGRegistration] 
----- register result -----
uid: 
registrationID:
2017-07-12 15:49:16.763230+0800 JPushTest[497:106633]  | JIGUANG | I - [JIGUANGLogin] 
----- login result -----
uid:
registrationID:
2017-07-12 15:49:16.899781+0800 JPushTest[497:106662]  | JIGUANG | I - [JIGUANGDeviceTokenReport] try to upload device token:
2017-07-12 15:49:17.792062+0800 JPushTest[497:106755]  | JIGUANG | I - [JIGUANGDeviceTokenReport] upload device token success

看起来是注册成功了,只有点击到了允许通知,才能够收到注册成功。

添加一个后台推送开关
极光推送_第7张图片

- (void)testAddNotification {
    JPushNotificationContent *content = [[JPushNotificationContent alloc] init];
    content.title = @"Test Notifications";
    content.subtitle = @"2016";
    content.body = @"This is a test code";
    content.badge = @1;
    content.categoryIdentifier = @"Custom Category Name";

    // 5s后提醒 iOS 10 以上支持
    JPushNotificationTrigger *trigger1 = [[JPushNotificationTrigger alloc] init];
    trigger1.timeInterval = 5;
    //每小时重复 1 次 iOS 10 以上支持
    JPushNotificationTrigger *trigger2 = [[JPushNotificationTrigger alloc] init];
    trigger2.timeInterval = 3600;
    trigger2.repeat = YES;

    //每周一早上800提醒,iOS10以上支持
    NSDateComponents *components = [[NSDateComponents alloc] init];
    components.weekday = 2;
    components.hour = 8;
    JPushNotificationTrigger *trigger3 = [[JPushNotificationTrigger alloc] init];
    trigger3.dateComponents = components;
    trigger3.repeat = YES;

    //#import 
    //一到某地点提醒,iOS8以上支持
    CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake(0, 0) radius:0 identifier:@"test"];
    JPushNotificationTrigger *trigger4 = [[JPushNotificationTrigger alloc] init];
    trigger4.region = region;

    //5s后提醒,iOS10以下支持
    JPushNotificationTrigger *trigger5 = [[JPushNotificationTrigger alloc] init];
    trigger5.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];

    JPushNotificationRequest *request = [[JPushNotificationRequest alloc] init];
    request.requestIdentifier = @"sampleRequest";
    request.content = content;
    request.trigger = trigger1;//trigger2;//trigger3;//trigger4;//trigger5;
    request.completionHandler = ^(id result) {
        NSLog(@"结果返回:%@", result);
    };
    [JPUSHService addNotification:request];
}

好了 推送成功。

参考文档

iOS SDK 概述

你可能感兴趣的:(极光推送)