美文网首页
个推推送记录

个推推送记录

作者: 龙子陵 | 来源:发表于2022-03-10 15:18 被阅读0次

发送推送后

1.如果此时App已经被杀死、或在app后台时间过长,已断开与个推长链接

则发送的是离线推送,通过Apns发送通知,点击通知栏内的消息,app进入前台,执行:

- (void)GeTuiSdkDidReceiveNotification:(NSDictionary *)userInfo notificationCenter:(UNUserNotificationCenter *)center response:(UNNotificationResponse *)response fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

同时,不会走个推通知展示的方法

- (void)GeTuiSdkNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification completionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
2.如果此时App在后台,但是未断开与个推的长链接,即刚刚退出app返回桌面时

则发送的是个推的透传消息,此时,正常情况下,苹果通知栏并不会展示任何通知出来,但是app内部会收到个推的回调方法:

/// 收到透传消息,cid在线,走此方法
/// @param userInfo    推送消息内容
/// @param fromGetui   YES: 个推通道  NO:苹果apns通道
/// @param offLine     是否是离线消息,YES.是离线消息
/// @param appId       应用的appId
/// @param taskId      推送消息的任务id
/// @param msgId       推送消息的messageid
/// @param completionHandler 用来在后台状态下进行操作(通过苹果apns通道的消息 才有此参数值)
- (void)GeTuiSdkDidReceiveSlience:(NSDictionary *)userInfo fromGetui:(BOOL)fromGetui offLine:(BOOL)offLine appId:(NSString *)appId taskId:(NSString *)taskId msgId:(NSString *)msgId fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

那么一般情况,用户无法收到(看到)这条推送,所以我们需要在收到透传消息后,发送一条本地通知,用来通知用户:

- (void)postLocalNotification:(NSDictionary*)userInfo{
    
    /** 清除之前的通知 */
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    
    NSString *gmid = nil;
    UILocalNotification *localNotify = [[UILocalNotification alloc] init];
    
    /** 设置通知触发的时间在几秒后 */
    NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:1];
    localNotify.fireDate = pushDate;
    
    localNotify.timeZone = [NSTimeZone defaultTimeZone];
    localNotify.repeatInterval = kCFCalendarUnitDay;
   
    /** 设置通知的音效(只有真机有效) */
    localNotify.soundName = UILocalNotificationDefaultSoundName;
  
    /** 推送内容 */
    localNotify.alertBody = userInfo[@"payload"];

    /** 获取通知消息数组,添加一次通知数量(因为此时用户还没点击通知,只是收到通知) */
    NSArray *notifyArray = [[UIApplication sharedApplication] scheduledLocalNotifications];
    int count = (int) [notifyArray count];
    localNotify.applicationIconBadgeNumber = count + 1;
    // 备注:点击统计需要
    if (gmid != nil) {
        NSDictionary *userInfoDict = @{@"_gmid_":gmid};
        localNotify.userInfo = userInfoDict;
    }
    /** 注册本地通知 */
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotify];
}

如用户此时点击了此条通知,则会继续调用个推通知展示的代理方法:

- (void)GeTuiSdkNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification completionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
//    completionHandler(UNNotificationPresentationOptionNone); //若不显示通知,则无法点击通知
    completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);
}

3.如果此时App在前台

则发送的消息逻辑与第二种情况一致,也是走个推的透传消息,但是,有一点区别,收到透传消息,app发送本地通知后,会自动调用个推的通知展示方法,即使用户没有点击这条推送:

- (void)GeTuiSdkNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification completionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler

记录一下:iOS点击home退出前台后,app会在5秒内终止代码运行,包括个推的透传消息也传递不过来,但是,此时app与个推的链接还是存在的,但是个推的代理方法无法运行。。。而由于链接还在,apns消息也也不会传递过来,这个断线过程大概会持续2分钟左右,

相关文章

  • [常用服务:推送+短信+移动WEB]

    消息推送 腾讯-信鸽: 百度-百度云推送: 个推-: 极光推送: 华为推送平台 盛大推送 leancloud个推、...

  • Android 消息推送(个推)

    服务端 采用批量 单推模式 封装库用法

  • vue消息推送【个推】

    我们在h5应用有时候回遇到消息推送的需求,hBuilder打包h5应用一般用的是“个推”和“小米推送”。一下是我总...

  • iOS角标问题

    iOS里清程序角标的时候会把通知栏的推送消息也清了。试验了好久得到了一些结论,记录下结果。推送分为远程推送和本地推...

  • Android接入华为推送遇到的坑

    前两个月接入了Android华为推送,遇到的坑真是不少,在此记录下。 坑1:有两个华为推送?我可能接入了假的华为推...

  • Android个推快速集成

    个推真是个磨人的小妖精啊...啊..... 个推官网:个推官网 android文档:android 个推文档 推送...

  • 2018-11-21--记录Android 个推集成&对推送的理

    最近项目换推送,有关人员发现个推推送挺好用的,于是就抛弃之前的友盟推送,换成个推。 首先去个推官网看了看demo,...

  • Thinkphp之极光推送

    先说说为啥选用极光推送作为第三方的推送服务。首先我所了解的推送产品有信鸽、个推、极光,之前用到过个推,感觉还不错,...

  • 个推SDK分析

    最近项目中有使用到个推,个推在程序关闭的时候也能收到推送,只有在程序被强制停止后才无法收到推送。简单分析下个推的原...

  • Hbuilder Mui自定义推送铃声

    首先推送就遇到很多坑,话不多说先上代码。 由于Hbuilder目前只支持个推和小米的推送,所以就介入了个推。 1....

网友评论

      本文标题:个推推送记录

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