ios - 个推有个特别严重的BUG
高洛峰
高洛峰 2017-04-17 17:30:07
[iOS讨论组]

这句注释可是官方的人写的啊。。。。/* APP已经接收到“远程”通知(推送) - (App运行在后台/App运行在前台) /

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
    application.applicationIconBadgeNumber = 0;
    
    NSLog("\n>>>[Receive RemoteNotification]:%@\n\n",userInfo);
}

官方的这段代码包括他自己的Demo运行起来,会出现这种奇特的现象:
在后台运行时推送到通知栏点击后可以触发以上代码,但是:
但是::::::
如果app在运行着 你正在看着本app的内容 这时如果你推送消息。。。。。抱歉,它并未执行的以上方法
我怀疑是不是推送都是这样。。。于是我就下载了个百度推送的Demo,发现人家就可以实现。。

我现在琢磨了一下午 时间都JB浪费了。我想知道这个问题到底是我的事呢 还是个推的SDK写的有问题?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
PHP中文网

官方最后在群里给了回复:
IOS还是Android

EZ 2016/2/15 14:53:28
场景:

EZ 2016/2/15 14:53:30
IOS

EZ 2016/2/15 14:53:48
我在玩手机 正在访问这个app 服务器 咔推送个消息

EZ 2016/2/15 14:53:56
这事我如何获得 userInfo?
个推技术支持-李恩光 2016/2/15 14:54:01
IOS app打开在前台,就是走个推直接下发透传消息的
个推技术支持-李恩光 2016/2/15 14:54:08
不走apns的
14:54:27
EZ 2016/2/15 14:54:27
swfit里demo写的前台后台都可以 但事实确不是

EZ 2016/2/15 14:54:34
注释上有

EZ 2016/2/15 14:54:55
APP已经接收到“远程”通知(推送) - (App运行在后台/App运行在前
个推技术支持-李恩光 2016/2/15 14:55:11
前台收到的就是透传消息啊,在后台会先走apns通道,收到apn通知,点击通知或者进入app,就会下发透传消息

EZ 2016/2/15 14:55:12
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {

application.applicationIconBadgeNumber = 0;

NSLog("\n>>>[Receive RemoteNotification]:%@\n\n",userInfo);

}

EZ 2016/2/15 14:56:08
我不点击的情况下 如何获得推送的userInfo?

EZ 2016/2/15 14:56:17
因为在浏览的时候 看不到通知
14:57:23
个推技术支持-李恩光 2016/2/15 14:57:23
app打开的的情况下,推送,是没有apn通知的啊

EZ 2016/2/15 14:57:40
那咋获得呢

EZ 2016/2/15 14:57:45
获得不了么
个推技术支持-李恩光 2016/2/15 14:58:32
你要什么效果,app打开的时候也能收到通知栏?
15:02:00
EZ 2016/2/15 15:02:00
不是 可以获得userInfo就行

EZ 2016/2/15 15:02:20

15:03:04
个推技术支持-李恩光 2016/2/15 15:03:04
app打开的时候,不走apns的
个推技术支持-李恩光 2016/2/15 15:03:26
除非你直接通过apn的接口推送,通过devictoken推送,不走个推

EZ 2016/2/15 15:04:22
哦 明白了 那我得想个其他办法
15:04:39
EZ 2016/2/15 15:04:39
那建议下哈 swift的demo把那个注释给去了

EZ 2016/2/15 15:04:48
不然会误导
个推技术支持-李恩光 2016/2/15 15:04:50
恩好的

=========================================以下是之前问别人的,可参考也可忽略============

我看了文档没有找到对应的说明。他们官方的demo也会是同样,你的可以是啊?我用的语言是swift

韩文博1 · 1 小时前

服务器端的代码,也是我下载他们官方的,我用他们官方的后台推送也是同样

韩文博1 · 1 小时前

http://docs.igetui.com/pages/viewpage.action?pageId=1934345我服务器端用的是这段代码

韩文博1 · 1 小时前

前台推送时:/* SDK收到透传消息回调 /

func GeTuiSdkDidReceivePayload(payloadId: String!, andTaskId taskId: String!, andMessageId aMsgId: String!, andOffLine offLine: Bool, fromApplication appId: String!) {

print(111)
print(taskId)
print(aMsgId)
/**
*汇报个推自定义事件
*actionId:用户自定义的actionid,int类型,取值90001-90999。
*taskId:下发任务的任务ID。
*msgId: 下发任务的消息ID。
*返回值:BOOL,YES表示该命令已经提交,NO表示该命令未提交成功。注:该结果不代表服务器收到该条命令
**/
GeTuiSdk.sendFeedbackMessage(90001, taskId: taskId, msgId: aMsgId);

}
这段代码是有反应的 不过我想获得推送的内容 用这个函数肯定是不行,因为这个函数的参数你可以看出 ,只要一些id userInfo获得不了

韩文博1 · 1 小时前

高洛峰

请注意看个推文档,你用的服务端是怎么推送的,个推分为前台推送和后台推送,服务器端和客服端都要设置相应的东西才能成功的,其中后台推送,要设置客服端的一个服务,并且服务器端也要用走apn的代码

迷茫

设置消息缓存时间

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号