博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】iOS学习之极光推送
阅读量:6168 次
发布时间:2019-06-21

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

一、极光推送工程端

1、下载SDK

 极光推送是一个推送消息的第三方,SDK下载:

 集成压缩包内容:包名为JPush-iOS-SDK-{版本号}

  • lib文件夹:包含头文件 JPUSHService.h,静态库文件jpush-ios-x.x.x.a ,支持的iOS版本为 5.0 及以上版本。(请注意:模拟器不支持APNs)

  • pdf文件:集成指南

  • demo文件夹:示例

 真如上面的介绍,我们在工程中需要 lib 文件夹,因此就只需要将 lib 文件夹 导入。

2、导入必要的框架

  • CFNetwork.framework

  • CoreFoundation.framework

  • CoreTelephony.framework

  • SystemConfiguration.framework

  • CoreGraphics.framework

  • Foundation.framework

  • UIKit.framework

  • Security.framework

  • Xcode7需要的是 libz.tbd ;Xcode7以下版本是 libz.dylib

  • Adsupport.framework (获取IDFA需要;如果不使用IDFA,请不要添加)

3、plist 文件创建之坑

 在极光的帮助文档中有一个坑,就是 创建并配置PushConfig.plist文件 。如果初始化 JPUSHService 使用极光 <= 1.8.8版本的SDK的注册方法(+ (void)setupWithOption:(NSDictionary *)launchingOption; 以弃用)就创建,如果使用之后版本的初始化方法,就不需要。我在下面就使用现在最新的一个版本 2.1.5,所以就没有创建 PushConfig.plist文件

4、代码

 现在 AppDelegate 中导入如下的两个头文件

// 极光服务头文件#import "JPUSHService.h"// ASIdentifierManager控制器头文件,广告,可以不使用#import 

 调用代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // Override point for customization after application launch.        // 广告(一般不使用)//    NSString *advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];    //Required    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {        //可以添加自定义categories        [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |                                                          UIUserNotificationTypeSound |                                                          UIUserNotificationTypeAlert)                                              categories:nil];    } else {        //categories 必须为nil        [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |                                                          UIRemoteNotificationTypeSound |                                                          UIRemoteNotificationTypeAlert)                                              categories:nil];    }    //Required    // 如需继续使用pushConfig.plist文件声明appKey等配置内容,请依旧使用[JPUSHService setupWithOption:launchOptions]方式初始化。    [JPUSHService setupWithOption:launchOptions appKey:@"你创建的应用的APPKey" // 注意一定要是自己的                          channel:@"App Store" // 指明应用程序包的下载渠道,为方便分渠道统计,具体值由你自行定义                 apsForProduction:0 // 1.3.1版本新增,用于标识当前应用所使用的APNs证书环境 0 (默认值)表示采用的是开发证书,1 表示采用生产证书发布应用            advertisingIdentifier:nil]; // 不使用就将advertisingIdentifier置为nil//            advertisingIdentifier:advertisingId];        // 当你入坑创建了plist文件,也可以使用这个初始化方法//    [JPUSHService setupWithOption:launchOptions];        return YES;}#pragma mark - 监听- (void)application:(UIApplication *)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {        /// Required - 注册 DeviceToken    NSLog(@"%d == deviceToken == %@",__LINE__, deviceToken);    [JPUSHService registerDeviceToken:deviceToken];}// 反馈给服务器- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {        // Required,For systems with less than or equal to iOS6        [UIApplication sharedApplication].applicationIconBadgeNumber = 0;        [JPUSHService handleRemoteNotification:userInfo];}- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {    //Optional    NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);}

5、关于广告(IDFA)

 r2.1.5版本增加一个上传IDFA字符串的接口:

+ (void)setupWithOption:(NSDictionary *)launchingOption                  appKey:(NSString *)appKey                 channel:(NSString *)channel        apsForProduction:(BOOL)isProduction   advertisingIdentifier:(NSString *)advertisingId;

 这个方法也就是我在上面使用的,如果不使用IDFA,仍可使用下面的接口:

+ (void)setupWithOption:(NSDictionary *)launchingOption                  appKey:(NSString *)appKey                 channel:(NSString *)channel        apsForProduction:(BOOL)isProduction;

 总结:三种初始化方法可以根据你自己的需求随意选择。

6、允许XCode7支持Http传输方法

 如果用的是Xcode7时,需要在App项目的plist手动配置下key和值以支持http传输:

 选择1:根据域名配置

  • 在项目的info.plist中添加一个Key:App Transport Security Settings,类型为字典类型。

  • 字典中添加一个Key:Allow Arbitrary Loads,类型为Boolean类型,值为YES。

  如图:

 选择2:全局配置

NSAppTransportSecurity
NSAllowsArbitraryLoads
  

以上就是你在工程中所有的配置,下面就是关于极光推送服务器端的操作!

二、极光推送服务器端

1、注册用户

2、创建应用

3、发送通知

 通知内容直接填写就可以

 推送对象需要就行一下选择,如下图:

 RegistrationID会在你工程的控制台打印,你可以根据这个来给一个人进行发送通知

以上是本人对极光推送的一个小总结和整理,大家有更好的话,就链接!!!!

 

转载于:https://www.cnblogs.com/gfxxbk/p/5565549.html

你可能感兴趣的文章
ajax的手写、封装和自定义设置
查看>>
class path resource [META-INF/xfire/services.xml] cannot be opened because it does not exist
查看>>
android自定义属性
查看>>
ERROR 1114 (HY000): The table 'table1' is full
查看>>
知乎网友神回复:哪怕是平时聊天吹牛的也没见程序员晒,这是为什么呢?
查看>>
Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!...
查看>>
phalapi-进阶篇2(DI依赖注入和单例模式)
查看>>
MySQL 5.7.5 : GTID_EXECUTED系统表
查看>>
Hybrid框架UI重构之路:四、分而治之
查看>>
【原创】Valgrind 基础
查看>>
Es6系列之destructuring assignments
查看>>
CSS ID选择器与CLASS选择器
查看>>
mysql 索引B-Tree类型对索引使用的生效和失效情况详解
查看>>
指针的看法
查看>>
Cocos-2d 坐标系及其坐标转换
查看>>
LAMP网站的CACHE机制概要
查看>>
[MySQL 5.6] 5.6新参数slave_rows_search_algorithms
查看>>
ESXi5.1嵌套KVM虚拟化环境支持配置
查看>>
爬虫的小技巧之–如何寻找爬虫入口
查看>>
JVM学习(二)垃圾收集器
查看>>