极光推送准确配置

推送前需要做一些准备工作了,就是推送必须的p12推送证书:开发环境(开发时测试需要的推送证书)、生产环境(发布到AppStore时需要的推送证书),因为xcode已经升级到了7.0以上,所以一些真机测试的配置文件证书就不需要自己手动去创建了,只要有Apple ID,真机测试时,就能自动生成,免费测试:

制作证书的过程就不啰嗦了,详细看官方文档或者如下推荐:

http://jingyan.baidu.com/article/c1465413975cba0bfcfc4ccf.html

http://docs.jpush.io/client/ios_tutorials/#ios_1

http://docs.jpush.io/guideline/ios_guide/

http://allluckly.cn/投稿/tuogao28?utm_source=tuicool&utm_medium=referral

创建完证书,就是去极光官网注册账号,创建应用,截图如下:

将创建的证书上传到应用上了,上传成功后的截图如下:

证书上传成功后,生成APP Key,截图如下:

好了,这下工作做完了,剩下的就是代码实现了


集成压缩包内容

包名为JPush-iOS-SDK-{版本号}

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

第二步:导入需要依赖的库文件:

必要的框架

  • 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,请不要添加)

第三步:在Appdelegate.m中法

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

    // Override point for customization after application launch.

   

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    

    MainViewController *main = [[MainViewController alloc] init];

    self.window.rootViewController = main;

    [self.window makeKeyAndVisible];

    

    // 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];

    }

    

    [JPUSHService setupWithOption:launchOptions appKey:极光平台的keychannel:可以为空apsForProduction:类型为Bool];

    

    

    return YES;

}

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

    //这个方法是设置别名和tag 可省

    // [JPUSHService setTags:nil alias:@"WzxJiang" fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {

    //        NSLog(@"rescode: %d, \ntags: %@, \nalias: %@\n", iResCode, iTags , iAlias);

    //   }];

    // Required

    [JPUSHService registerDeviceToken:deviceToken];

}

- (void)applicationWillEnterForeground:(UIApplication *)application {

    NSLog(@"进入前台");

    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;

}

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

//    //iOS 7及之后才能用,现在没人适配iOS6了吧...

//    // IOS 7 Support Required

//    [JPUSHService handleRemoteNotification:userInfo];

//    completionHandler(UIBackgroundFetchResultNewData);

    

    //判断app是不是在前台运行,有三个状态(如果不进行判断处理,当你的app在前台运行时,收到推送时,通知栏不会弹出提示的)

    // UIApplicationStateActive, 在前台运行

    // UIApplicationStateInactive,未启动app

    //UIApplicationStateBackground    app在后台

    

    if([UIApplication sharedApplication].applicationState == UIApplicationStateActive)

    {  //此时app在前台运行,我的做法是弹出一个alert,告诉用户有一条推送,用户可以选择查看或者忽略

        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"推送消息"

                                                         message:@"您有一条新的推送消息!"

                                                        delegate:self

                                               cancelButtonTitle:@"取消"

                                               otherButtonTitles:@"查看",nil];

        [alert show];

        

        

    }else {

    //这里是app未运行或者在后台,通过点击手机通知栏的推送消息打开app时可以在这里进行处理,比如,拿到推送里的内容或者附加      字段(假设,推送里附加了一个url www.baidu.com),那么你就可以拿到这个url,然后进行跳转到相应店web页,当然,不一定必须是web页,也可以是你app里的任意一个controll,跳转的话用navigation或者模态视图都可以

       NSString * str = [userInfo objectForKey:@"url"];

        NSLog(@"str = %@",str);

   }


  //这里设置app的图片的角标为0,红色但角标就会消失

   [UIApplication sharedApplication].applicationIconBadgeNumber  =  0;

    completionHandler(UIBackgroundFetchResultNewData);

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值