//
//  JPushHelper.m
//  Car
//
//  Created by Javen on 2016/12/29.
//  Copyright © 2016年 上海勾芒信息科技. All rights reserved.
//

#import "JPushHelper.h"
#import "JPUSHService.h"

static NSString *const JPUSHAPPKEY = @"5dc63eefddc7955ac9985390"; // 极光appKey
static NSString *const channel = @"蒲公英";                    // 固定的

#ifdef DEBUG                            // 开发
static BOOL const isProduction = FALSE; // 极光FALSE为开发环境
#else // 生产
static BOOL const isProduction = TRUE; // 极光TRUE为生产环境
#endif

@implementation JPushHelper

+ (void)JPUSHConfigWithOptions:(NSDictionary *)launchOptions {
  // 注册apns通知
  if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) // iOS10
  {
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
    JPUSHRegisterEntity *entity = [[JPUSHRegisterEntity alloc] init];
    entity.types = UNAuthorizationOptionAlert | UNAuthorizationOptionBadge |
                   UNAuthorizationOptionSound;
    [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];
#endif
  } else if ([[UIDevice currentDevice].systemVersion floatValue] >=
             8.0) // iOS8, iOS9
  {
    //可以添加自定义categories
    [JPUSHService
        registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
                                            UIUserNotificationTypeSound |
                                            UIUserNotificationTypeAlert)
                                categories:nil];
  } else // iOS7
  {
    // categories 必须为nil
    [JPUSHService
        registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                            UIRemoteNotificationTypeSound |
                                            UIRemoteNotificationTypeAlert)
                                categories:nil];
  }
  /*
   *  launchingOption 启动参数.
   *  appKey 一个JPush 应用必须的,唯一的标识.
   *  channel 发布渠道. 可选.
   *  isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为
   * YES.
   *  advertisingIdentifier 广告标识符（IDFA） 如果不需要使用IDFA，传nil.
   * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
   */

  // 如不需要使用IDFA，advertisingIdentifier 可为nil
  // 注册极光推送
  [JPUSHService setupWithOption:launchOptions
                         appKey:JPUSHAPPKEY
                        channel:channel
               apsForProduction:isProduction
          advertisingIdentifier:nil];

  // 2.1.9版本新增获取registration id block接口。
  [JPUSHService
      registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
        if (resCode == 0) {
          // iOS10获取registrationID放到这里了, 可以存到缓存里,
          // 用来标识用户单独发送推送
          NSLog(@"registrationID获取成功：%@", registrationID);
          [[NSUserDefaults standardUserDefaults] setObject:registrationID
                                                    forKey:@"registrationID"];
          [[NSUserDefaults standardUserDefaults] synchronize];
        } else {
          NSLog(@"registrationID获取失败，code：%d", resCode);
        }
      }];
}

+ (void)registerDeviceToken:(NSData *)deviceToken {
  [JPUSHService registerDeviceToken:deviceToken];
}


@end
