哈哈哈嘿嘿嘻嘻 2015-11-28 01:17 采纳率: 0%
浏览 2920

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、真的希望能解决,感谢

  • 写回答

1条回答 默认 最新

  • devmiao 2015-11-28 21:16
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)