码迷,mamicode.com
首页 > 移动开发 > 详细

推送 iOS 10

时间:2016-12-07 02:28:30      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:and   ios10   ppi   按钮   ios6   ica   文件   with   类型   

1:APNs通知与应用内消息对比

极光文档上面是这么写的

技术分享

后来更直接的说法是:

技术分享

2:下面是介绍app不同状态下面接受到通知调用的方法:

// 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(UNNotificationPresentationOptionNone); // 需要执行这个方法,选择是否提醒用户,有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];

    }

    NSLog(@"%@",response.notification.request.content.body);

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

}

//程序已经杀死

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

    [Bugly startWithAppId:@"49c45f90fe"];    

    //远程推送发送过来json字符串

    NSDictionary *userinfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];

通知的内容存在于launchOptions中

 NSDictionary *userinfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];

userinfo[@"aps"][@"alert"]

里面可以获取到通知的内容

 

//静默通知(静默通知app死掉的时候不进行

静默推送:收到推送(没有文字没有声音),不用点开通知,不用打开APP,就能执行

使用静默通知的关键意义是程序在后台的时候能够在不点击通知的(应为静默通知本身就没有通知栏)敲敲的执行后台的代码

不管使用哪种三方的推送(极光,融云,个推,pushmeBaby),一定要设置

一定要加"content-available" : 1  (只设置这个字段的话,可以实现后台推送完成接收)

还有

sound,alert  badge也不能加,加入的话也是静默推送,可以测试时添加

实例静默推送内容技术分享

因为静默推送的关键意义在于后台的推松,所以一定要记得打开app后台推送的功能

技术分享

技术分享

如果升级了ios10,一定要按照最新的文档进行集成

注意

1:应当提供

- (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 iOS6
  [JPUSHService handleRemoteNotification:userInfo];
}

 下面的方法会被上面的方法挤掉

如果想收到静默通知,必须实现上面的方法而不是下面的

即静默采用ios 7的方法替换原来的

 

2:关于证书:如果自己公司的后台集成了极光推送,应当提供好推送的两个证书的p12文件

生产证书不一定要上线

技术分享

3:判断程序在前台的方法

[UIApplication sharedApplication].applicationState == UIApplicationStateActive

4:极光推送不展示小红点

application.applicationIconBadgeNumber = 0;

[JPUSHService setBadge:0];(推向极光的服务器)

 

 关于通知的补充:

1:收到前台通知调用的方法

技术分享

 

2:通知上面添加的点击事件,通过通知设置分类

技术分享

 点击上面不同的按钮调用下面的方法,通过identifier进行区分

 技术分享

3:技术分享

 

4.继承公司自己的推送只需要

appdelegate里面设置appid即可

5:后台进行的静默通知,应该进行流量的判断

 

推送 iOS 10

标签:and   ios10   ppi   按钮   ios6   ica   文件   with   类型   

原文地址:http://www.cnblogs.com/chaoyueME/p/6139732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!