ios-iOS 推送来时有时点击app图标也会跳转 我已经贴了代码 希望大家能帮忙解决真的烦扰我很久了

问题描述

iOS 推送来时有时点击app图标也会跳转 我已经贴了代码 希望大家能帮忙解决真的烦扰我很久了

我用的是个推的SDK
1、我先说我想达到的目的以及问题:

a、在前台不能点击通知栏跳转且通知栏不显示通知信息
b、在后台(程序未杀死)通知栏显示通知信息且点击通知栏的信息会跳转到某个controller,但是点击app图标不会跳转
(这是出问题的地方,就是我有的时候来通知了 点击app图标进入应用,是正常的不会跳转,但偶尔也会跳转)
c、程序杀死后通知栏显示通知信息且点击通知栏的信息会跳转到某个controller,但是点击app图标不会跳转
2、如下是我的代码(也可以私聊我):

(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
// 当被杀死状态收到本地通知时执行的跳转代码
if (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]) {
//跳转到一个controller
}

}

(void)applicationDidEnterBackground:(UIApplication *)application {
_is_background = YES;
}
(void)applicationDidBecomeActive:(UIApplication *)application {
_is_background = NO;
}
(void)GexinSdkDidReceivePayload:(NSString )payloadId fromApplication:(NSString )appId
{
// [4]: 收到个推消息
NSData *payload = [_gexinPusher retrivePayloadById:payloadId];
NSString *payloadMsg = nil;
if (payload) {
payloadMsg = [[NSString alloc] initWithBytes:payload.bytes
length:payload.length
encoding:NSUTF8StringEncoding];
}
NSLog(@"payloadId%@",payloadId);
NSDictionary *userinfo = [Utility jsonStringToObject:payloadMsg];

        UILocalNotification *notification=[[UILocalNotification alloc] init];
        // 在后台时接收信息通知  前台并不接收(程序并未死)
        if (notification!=nil && _is_background == YES) {
                notification.timeZone=[NSTimeZone defaultTimeZone];
                        notification.alertBody= [NSString stringWithFormat:@"你收到的消息是:“%@”",userinfo];
                        notification.userInfo = @{@"info":payloadMsg};
                        [[UIApplication sharedApplication]   scheduleLocalNotification:notification];

        }

}

// 点击本地通知栏的跳转

(void)application:(UIApplication )application didReceiveLocalNotification:(UILocalNotification )notification{
NSDictionary *userinfo = [Utility jsonStringToObject:notification.userInfo];
// 执行跳转到controller的代码
}

3、我认为有问题的是不是这一句 if (notification!=nil && _is_background == YES) 判断 因为有的时候通知来了 而这个从后台切换到前台的 _is_background变量还未变成NO 也就是通知收到的速度 比 - (void)applicationDidEnterBackground:(UIApplication *)application {

    _is_showNotificationBar = NO;

}
执行的快

4、是不是我这种做法本身就有错误,我网上查了很多资料,第一次做,大部分都是千篇一律的,所以想问问是不是有更好的实现方式 希望指正

5、真的希望能解决,感谢

解决方案

http://www.cocoachina.com/bbs/read.php?tid=145245

时间: 2024-05-20 02:12:45

ios-iOS 推送来时有时点击app图标也会跳转 我已经贴了代码 希望大家能帮忙解决真的烦扰我很久了的相关文章

IOS远程推送,第一次点击通知,没有提示信息

问题描述 IOS远程推送,第一次点击通知,没有提示信息 当应用在前台或后台的时候,推送一切正常:但是当应用是退出状态的时候,收到推送信息,点击推送信息.这里要说明一下,打开应用的时候,应该有一个alertview弹出框的(当应用在前台或后台的时候都是这样),但是,第一次点击推送消息,应用打开,并没有alertview弹出框,但是,第二次点击通知栏通知的时候,会出现alertview弹出框. 我感觉不应该是这样的,请大神们给我解惑,到底本来就是这样,还是说我有地方没有考虑到... ps:应用是在退

ASP.NET MVC4中razor使用布局页时点击导航栏局部页面跳转不出来,但是没有报错,怎么解决?

问题描述 ASP.NETMVC4中razor使用布局页时点击导航栏局部页面跳转不出来,但是没有报错,怎么解决? 解决方案 解决方案二:@URI.Content("~/控制器的名字","动作方法名")@html.Action("动作方法的名字","控制器的名字")

iOS远程推送原理及实现过程

原文出自[听云技术博客]:http://blog.tingyun.com/web/article/detail/571 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题.那么首先让我们准备一些做推送需要的东西.我们需要一个付费的苹果开发者账号(免费的不可以做远程推送),有了开发者账号,我们可以去苹果开发者网站,配置自己所需要的推送的相关证书.然后下载证书,供我们后面使用,详细

iOS远程推送Push开发教程_IOS

远程推送通知 什么是远程推送通知 顾名思义,就是从远程服务器推送给客户端的通知(需要联网)远程推送服务,又称为APNs(Apple Push Notification Services) 为什么需要远程推送通知 传统获取数据的局限性 只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容 远程推送通知可以解决以上问题 不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知 远程推送通知使用须知 所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接

在 ubuntu 下使用 Pushbullet Indicator 向 Android/iOS 设备推送文件

在 ubuntu 下使用 Pushbullet Indicator 向 Android/iOS 设备推送文件 Pushbullet是一款iOS和Android设备与桌面系统互相传输文件.链接.图片的APP应用,Pushbullet可以在任何装有Firefox或Chrome 浏览器的操作系统上安装使用. 如果你不是浏览器扩展插件的粉丝,却依然想使用桌面应用Pushbullet in Ubuntu 14.04的话,你可以使用由 Atareao开发 的Pushbullet Indicator. Pus

iOS消息推送原理及具体实现代码_IOS

一.消息推送原理 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]): 2.APNS:Apple Push Notification Service[苹果消息推送服务器]: 3.iPhone:用来接收APNS下发下来的消息: 4.Client App:IOS设备上的应用程序,用来接收iphone传递APNS下发的消息到制定

iOS 10 推送高阶篇(必看)_IOS

推荐阅读: iOS10推送之基础知识(必看篇) 这篇文章开始,我会跟大家好好讲讲,苹果新发布的iOS10的所有通知类. 一.创建本地通知事例详解: 注意啊,小伙伴们,本地通知也必须在appdelegate中注册中心,通知的开关打不打开无所谓的,毕竟是本地通知,但是通知的接收的代理,以及通知点击的代理,苹果给合二为一了.所以大家还是需要在appdelegate中写上这2个方法,还有不要忘记在- (BOOL)application:(UIApplication *)application didFi

iOS自定义推送消息提示框_IOS

看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢?  因为项目需求是这样的:最近需要做 远程推送通知 和一个客服系统 包括店铺客服和官方客服两个模块 如果有新的消息推送的时候 如果用户当前不在客服界面的时候  要求无论是在app前台 还是app退到后台 顶部都要弹出系统的那种消息提示框 这样的需求 我们就只能自定义一个在app内 弹出消息提示框   实现步骤如下:  1.我们自定义一个view 为 STPushView 推送消息的提示框view  #imp

详解iOS本地推送与远程推送_IOS

一.简介 分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程序也不会弹出该提示框,需要用户到设置里面设置.一共有三种提示类型: UIUserNotificationTypeBadge:应用图标右上角的信息提示 UIUserNotificationTypeSound:播放提示音 UIUserNotificationTypeAlert:提示框 二.本地推送 1