美文网首页iOS日常笔记
极光推送配置以及应用

极光推送配置以及应用

作者: Mr_Zhou | 来源:发表于2019-04-11 14:09 被阅读0次

1、导入 SDK

Cocoapods 导入,通过 Cocoapods 下载地址:pod 'Push'

2、使用 Xcode 8 及以上环境开发--开启通知

开启

3、将以下代码添加到 AppDelegate.m 引用头文件的位置。

//引入JPush功能所需头文件

#import "JPUSHService.h"

// iOS10注册APNs所需头文件

#ifdef NSFoundationVersionNumber_iOS_9_x_Max

#import <UserNotifications/UserNotifications.h>

#endif

// 如果需要使用 idfa 功能所需要引入的头文件(可选)

#import <AdSupport/AdSupport.h>

4、添加代理 <JPUSHRegisterDelegate>

5、初始化APNS代码

将以下代码添加到 -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

//Required

  //notice: 3.0.0及以后版本注册可以这样写,也可以继续用之前的注册方式

  JPUSHRegisterEntity * entity =[[JPUSHRegisterEntity alloc]init];

  entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound|JPAuthorizationOptionProvidesAppNotificationSettings;

  if([[UIDevice currentDevice].systemVersion floatValue]>= 8.0){

    //可以添加自定义categories

    // NSSet *categories for iOS10 or later

    // NSSet *categories for iOS8 and iOS9

  }

  [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];

// Optional

  //获取IDFA

  //如需使用IDFA功能请添加此代码并在初始化方法的advertisingIdentifier参数中填写对应值

  NSString *advertisingId =[[[ASIdentifierManager sharedManager]advertisingIdentifier]UUIDString];

  // Required

  // init Push

  // notice: 2.1.5版本的SDK新增的注册方法,改成可上报IDFA,如果没有使用IDFA直接传nil

  //如需继续使用pushConfig.plist文件声明appKey等配置内容,请依旧使用[JPUSHService setupWithOption:launchOptions]方式初始化。

  [JPUSHService setupWithOption:launchOptions appKey:appKey channel:channel apsForProduction:isProduction advertisingIdentifier:advertisingId];

部分参数说明:

appKey:(极光推送创建应用的appKey)

channel:自定义如:App Store。

apsForProduction:

1.3.1 版本新增,用于标识当前应用所使用的 APNs 证书环境。

0(默认值)表示采用的是开发证书,1 表示采用生产证书发布应用。

注:此字段的值要与Build Settings的Code Signing配置的证书环境一致。

advertisingIdentifier: IDFA

IDFA

6、传deviceToken

-(void)application:(UIApplication *)application

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

  /// Required -注册DeviceToken

  [JPUSHService registerDeviceToken:deviceToken];

}

7、注册APNS失败方法

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

 //Optional

  NSLog(@"did Fail To Register For Remote Notifications With Error: %@",error);

}

8、添加处理 APNs 通知回调方法,在 AppDelegate.m 实现该回调方法并添加回调方法中的代码

#pragma mark- JPUSHRegisterDelegate

// iOS 12 Support

-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification{

  if(notification &&[notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]){

    //从通知界面直接进入应用

  }else{

    //从通知设置界面进入应用

  }

}

// iOS 10 Support

-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void(^)(NSInteger))completionHandler {

  // Required

  NSDictionary * userInfo = notification.request.content.userInfo;

  if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]){

    [JPUSHService handleRemoteNotification:userInfo];

  }

  completionHandler(UNNotificationPresentationOptionAlert);//需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以选择设置

}

// iOS 10 Support

-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler {

  // Required

  NSDictionary * userInfo = response.notification.request.content.userInfo;

  if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]){

    [JPUSHService handleRemoteNotification:userInfo];

  }

  completionHandler();  //系统要求执行这个方法

}

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

  // Required,iOS 7 Support

  [JPUSHService handleRemoteNotification:userInfo];

  completionHandler(UIBackgroundFetchResultNewData);

}

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

  // Required,For systems with less than or equal to iOS 6

  [JPUSHService handleRemoteNotification:userInfo];

}

更详细的配置文档参考 iOS 极光推送SDK集成指南

相关文章

  • 极光推送配置以及应用

    1、导入 SDK Cocoapods 导入,通过 Cocoapods 下载地址:pod 'Push' 2、使用 X...

  • 极光推送进行远程推送

    借阅:极光推送进行远程推送 怎么使用极光推送进行远程推送 在极光官网注册极光推送创建一个应用在应用配置中导入两个证...

  • iOS 极光推送

    证书的制作就不说了,下面看看怎么使用极光推送进行远程推送 一、配置 在极光官网注册极光推送2.创建一个应用在应用配...

  • 10分钟集成iOS极光推送SDK

    配置: 注册极光账号并于控制台创建应用,获取对应应用的AppKey在极光控制台中的推送设置里上传对应推送证书使用p...

  • Android极光推送集成以及极光验证码Demo

    极光推送以及极光验证码 极光推送 配置 主要特点 产品功能说明 客户端维持连接占用资源少、耗电低SDK丰富的接口,...

  • 极光推送(二)——推送的使用

    前言 在极光推送(一)——配置中讲过了极光推送的配置,这节讲讲极光推送的使用参考文档极光官网 下面以我写的demo...

  • iOS开发 - 极光推送中生产证书和开发证书的生成

    项目中用到了 极光推送,这里记录下极光推送中生产证书和开发证书的生成过程。 推送设置中需要配置生产证书以及开发证书...

  • 极光推送

    一、登录极光平台 创建项目获取AppKey极光推送创建的应用信息.png记录AppKey暂时放置一边。 二、配置推...

  • 极光统计

    前言 极光统计可以独立使用,其配置和极光推送相似 极光统计配置 极光统计代码编写 极光统计方法调用 具体配置请参考...

  • iOS 极光推送诶配置成功却收不到推送消息的处理

    极光配置都OK了,推送能力打开了,Apple的推送证书也配置了,极光后台的推送证书也验证成功了,推送也打印了log...

网友评论

    本文标题:极光推送配置以及应用

    本文链接:https://www.haomeiwen.com/subject/fystwqtx.html