iOS 极光推送

作者: 麦兜兜买兜兜 | 来源:发表于2016-05-17 21:48 被阅读558次

一、配置APNs

苹果APNs(英文全称:Apple Push Notification Service)

1.配置开发证书

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

2.配置生产证书

和配置开发证书的流程相同。

3.将配置好的证书导出为 .p12 文件

Paste_Image.png Paste_Image.png Paste_Image.png
一、注册极光推送帐号
可登录 极光推送官网 注册帐号。
注册成功后进入控制台 Paste_Image.png Paste_Image.png
二、集成极光推送SDK
sdk下载地址 点击传送
我使用的是JPush-iOS-SDK-2.1.0。下载的文件里有个pdf文件iOS+SDK+Integration+Guide.pdf,介绍了集成极光推送的详细代码。
在工程文件中,做如下设置: 我在Xcode7.2里面没找到这个选项

这是我的代码
AppDelegate.h

static NSString *appKey = @"你在极光申请到的KEY";  //AppKey  *必填
static NSString *channel = @"Publish channel"; //发布聚到 选填
static BOOL isProduction = FALSE;  //是否为生产环境

AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//Required

[self configurationPushInfo:launchOptions];

return YES;
}

-(void)configurationPushInfo:(NSDictionary *)launchOptions{
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];
}

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

}

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

/// Required - 注册 DeviceToken
[JPUSHService registerDeviceToken:deviceToken];
}

/**
 *  当前APP处于前台活跃状态时接收到推送通知时调用的方法
 *  当前APP处于后台挂起时接到推送点击顶部提示框进到app中调用的方法
 *  当前APP处于后台挂起时接到推送点击通知栏消息进入到app中调用的方法
 *  @param application       <#application description#>
 *  @param userInfo          <#userInfo description#>
 *  @param completionHandler <#completionHandler description#>
 */
  -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{

completionHandler(UIBackgroundFetchResultNewData);
NSLog(@"收到通知:%@", [self logDic:userInfo]);
//[[NSNotificationCenter defaultCenter] postNotificationName:@"gotoMessageView" object:nil userInfo:<#(nullable NSDictionary *)#>];
[[NSNotificationCenter defaultCenter] postNotificationName:@"gotoMessageView" object:userInfo];

}
/**
 *  注册失败的Push 方法
 *
 *  @param application 应用描述
 *  @param error       错误信息
 */
- (void)application:(UIApplication *)application
didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
    }

#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1

- (void)application:(UIApplication *)application
didRegisterUserNotificationSettings:
(UIUserNotificationSettings *)notificationSettings {

  }

- (void)application:(UIApplication *)application                   handleActionWithIdentifier:(NSString *)identifier
forLocalNotification:(UILocalNotification *)notification
  completionHandler:(void (^)())completionHandler {

}

- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
  completionHandler:(void (^)())completionHandler {

}
#endif

- (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification {
[JPUSHService showLocalNotificationAtFront:notification     identifierKey:nil];
}
//编码问题
- (NSString *)logDic:(NSDictionary *)dic {
if (![dic count]) {
    return nil;
}
NSString *tempStr1 =
[[dic description] stringByReplacingOccurrencesOfString:@"\\u"
                                             withString:@"\\U"];
NSString *tempStr2 =
[tempStr1 stringByReplacingOccurrencesOfString:@"\""     withString:@"\\\""];
NSString *tempStr3 =
[[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
NSString *str =
[NSPropertyListSerialization propertyListFromData:tempData
                                 mutabilityOption:NSPropertyListImmutable
                                           format:NULL
                                 errorDescription:NULL];
return str;
  }

本文参考自简书作者:hrscy
如有转载请注明出处

相关文章

  • 【知识总结】(2)远程推送

    推送SDK:极光推送 后台点击推送: iOS 10 以下收到推送点击触发 iOS 10 以上触发: 极光推送中使用...

  • iOS-iOS10极光推送的使用

    1、首先先配置好推送证书,传到极光。极光推送->iOS证书设置指南极光推送->iOS SDK集成指南(XCode8...

  • iOS-极光推送的使用

    1、首先先配置好推送证书,传到极光。极光推送->iOS证书设置指南极光推送->iOS SDK集成指南(XCode8...

  • 极光推送集成开发

    1.极光推送集成与设置 极光推送地址①注册极光推送账号。②在应用管理内按照步骤创建APP。③找到“文档——iOS—...

  • iOS —— 极光推送和极光IM

    前言 (环境:iOS12.0、极光推送SDK3.1.0、极光IM3.7.0) 写iOS 推送(苹果原生态)时,笔者...

  • 使用苹果原生APNS和后端推送工具Easy APNs Provi

    最近研究苹果原生apns,极光推送在此不详细解释了,具体查看极光文档极光推送传送门 原生APNS,iOS 代码如下...

  • 环信消息推送

    一,关于推送 之前做过 极光 APNS 个推的 推送 : 这里说下 极光推送是比较 适合用在 iOS 端和 安卓端...

  • iOS 推送参考文档

    1、ios 消息推送证书设置和整理(备忘)2、iOS 远程推送APNS从0至发布-极光推送& 真机测试篇3、iOS...

  • IOS 推送 (极光推送)

    今天朋友说到推送,因为以前也没做过,就跟着看了看极光的推送.(自己的每一步,很详细,很啰嗦..大神就不用看了......

  • iOS开发极光推送遇到的问题

    极光推送文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/#...

网友评论

  • 做你的小星星:请问一下我的那个开发环境下怎么不接收不了通知?
    麦兜兜买兜兜:@做你的小星星 我上面代码里面设置是生产模式
    麦兜兜买兜兜:@做你的小星星 在这个方法里面会设置是否是开发环境模式----static BOOL isProduction = FALSE; //是否为生产环境设置是或者不是

本文标题:iOS 极光推送

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