IOS 极光推送自定义通知遇到的一些坑
主要方法:
//自定义推送
- (void)networkDidReceiveMessage:(NSNotification *)notification {
NSDictionary * userInfo = [notification userInfo];//
NSString *contentUser = [userInfo valueForKey:@"content"];//content:获取推送的内容
NSDictionary *extras = [userInfo valueForKey:@"extras"];//extras:获取用户自定义参数
NSString *customizeField1 = [extras valueForKey:@"customizeField1"]; //服务端传递的Extras附加字段,key是自己定义的 customizeField1:根据自定义key获取自定义的value
NSLog(@"接收到自定义通知 content = %@,extras = %@,customizeField1 = %@",contentUser,extras,customizeField1);
//极光自定义通知
JPushNotificationContent *content = [[JPushNotificationContent alloc] init];
//content.title = @"Test Notifications";
//content.subtitle = @"2016";
content.body = contentUser;
content.badge = @;
content.categoryIdentifier = @"Custom DAKQQSB DingDan";
content.sound = @"test.caf";
// 5s后提醒 iOS 10 以上支持
JPushNotificationTrigger *trigger1 = [[JPushNotificationTrigger alloc] init];
if(IOS10_OrLater)
{
trigger1.timeInterval = 0.001;
}
else
{
//5s后提醒,iOS10以下支持
trigger1.fireDate = [NSDate dateWithTimeIntervalSinceNow:];
} JPushNotificationRequest *request = [[JPushNotificationRequest alloc] init];
request.requestIdentifier = content.categoryIdentifier;
request.content = content;
request.trigger = trigger1;
request.completionHandler = ^(id result) {
NSLog(@"极光推送结果返回:%@", result);
};
[JPUSHService addNotification:request];
if([self runningInForeground])
{
NSLog(@"推送前台 推送前台");
}
}
但是要注意的是,自定义通知时,只有程序在后台运行才有提示音,程序在前台运行时只有提示,没有声音,所以需要在前台自己设置播放声音.不知道还有没有其他解决办法
//判断前台
-(BOOL) runningInForeground
{
UIApplicationState state = [UIApplication sharedApplication].applicationState;
BOOL result = (state == UIApplicationStateActive); return result;
}
//播放音乐
-(void)playSound{
SystemSoundID soundID;
//NSBundle来返回音频文件路径
NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"caf"];
//建立SystemSoundID对象,但是这里要传地址(加&符号)。 第一个参数需要一个CFURLRef类型的url参数,要新建一个NSString来做桥接转换(bridge),而这个NSString的值,就是上面的音频文件路径
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
//播放提示音 带震动
AudioServicesPlayAlertSound(soundID);
//播放系统声音
// AudioServicesPlaySystemSound(soundID);
}
-----------错误记录
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_JPUSHRegisterEntity", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_JPUSHService", referenced from:
objc-class-ref in LoginViewController.o
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
原因查了很多地方,后来才发现只是因为打包时把product-schemes-run的环境改成release了,改回debug就没这个错误了.
IOS 极光推送自定义通知遇到的一些坑的更多相关文章
- (转载)iOS 极光推送SDK 集成指南
iOS SDK 集成指南 使用提示 本文匹配的 SDK版本:r1.2.5 以后. 查看最近更新了解最新的SDK更新情况. 产品功能说明 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能 ...
- iOS极光推送
昨天花了一下午的时间研究了下极光推送,也前也是没做过,不知道从何下手!才开始的时候一看官方的SDK感觉好难,不过经过一系列的捣鼓之后,手机收到了推送信息,感觉其实并没有那么难! 1.配置开发证书(得有 ...
- iOS极光推送的基本使用
昨天花了一下午的时间研究了下极光推送,也前也是没做过,不知道从何下手!才开始的时候一看官方的SDK感觉好难,不过经过一系列的捣鼓之后,手机收到了推送信息,感觉其实并没有那么难! 1.配置开发证书(得有 ...
- iOS 极光推送 如何点击推送消息跳转页面
假如你已经集成完了极光,恰好有这个问题不知如何解决,可以看看这篇文章,这篇是针对远程通知的,本地通知大同小异吧. 根据我项目的要求,极光推送跳转指定页面分为两种情况:app在后台情况和app在杀死的情 ...
- iOS极光推送SDK的使用流程
一.极光推送简介 极光推送是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,整合了iOS.Android和WP平台的统一推送服务.使用起来方便简单,已于集成,解决了原生远程推送繁 ...
- iOS - 极光推送证书的创建及过期处理
无论iPhone还是安卓,我们用到的所有应用基本都有推送通知服务,因为这是应用很好的推广方式,有新产品了.有新更新了通知下用户及时查看.但Apple有点特殊,它的推送需要发到苹果服务器上中转一下,这就 ...
- ios -- 极光推送《1》
昨天公司项目要加入远程推送功能,自己做显然会很麻烦,所以用了极光的远程推送,下面我会讲如何制作推送证书并使用极光推送进行远程推送. 先讲讲怎么下载推送证书吧(前面的很简单要是知道的可以直接往下滑,简书 ...
- iOS极光推送,两次Bundleid不一致( 开发证书没有通过验证 是否重新上传证书)的解决方案
极光在配置ios端推送时,需要上传p12证书,如果遇到如下图:: 证书上传未通过的原因一般有: 1.当前上传的p12证书密码输入有误: 2. 证书导出的时候展开了证书,把个人私钥导了出来,导证书的时候 ...
- 关于ios极光推送server端注意的地方
今天试用了极光推送API 用它是因为,大多数人说它的文档是最全的,但是用过之后,发现关于IOS的文档,还是很不够,导致走了一点弯路! 特别是服务端的代码:https://github.com/jpus ...
随机推荐
- 【转】解决Android 6.0 NoSuchContextException 和WEBVIEW_undefined 的问题
在 Android 4.4 操作系统上测试混合应用时,可以直接顺利的在native模式和webview模式之间切换,但是在Android6.0 操作系统上却报NoSuchContextExceptio ...
- C语言函数声明什么时候可以省略,什么时候不能省?
在学习C语言函数的时候,老师总会告诉我们函数要写声明,然后再定义.这是个稳健的做法.等我自己学习了其他高级语言以后,回头再来写C,突然就觉得函数要写声明有点麻烦.无意间发现有一次函数没写声明居然编译( ...
- Oracle扩展的统计信息
我们在收集列的统计信息与直方图时,往往都是对某一列的收集.当谓词使用多个相关列时,会导致约束条件的冗余.这几个相关的列也被称作关联列.出现这种情况时,查询优化器也会做出不准确的判断.所以我们必须对这些 ...
- XAMPP启动Apache时发生ERROR
XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,是一个易于安装且包含 MySQL.PHP 和 Perl 的 Apache 发行版.XAMPP 的确非常容易安装和 ...
- C#调用java包里的方法
用IKVM,步骤: 下载ikvmbin-7.2.4630.5.zip,解压,把bin目录所在路径加到环境变量path里 2.电脑开始->CMD,输入ikvmc –out:”输出dll文件的路径” ...
- kafka 心跳和 reblance
kafka 的心跳是 kafka consumer 和 broker 之间的健康检查,只有当 broker coordinator 正常时,consumer 才会发送心跳. consumer 和 re ...
- Nginx 作用
django 请求的生命周期 Nginx 的作用: 浏览器 --- nginx(反向代理器)-- uwsgi --- django项目nginx : 负载均衡, 将任务分发给不同的uwsgi 动静分离 ...
- lr添加md5方法,字符编码转换,urlcode编码化
1.使得写lr脚本时可调用md5方法,需要进行以下操作: 1)将md5.h文件加载到Extra Files下: 2)在globals.h文件中添加 #include“md5.h” 3).打开md5文 ...
- 关于Struts2中 Action 配置method的解读
为Action配置method属性: 将Action类中的每一个处理方法都定义成一个逻辑Action方法. <!DOCTYPE struts PUBLIC "-//Apache Sof ...
- Html+css学习笔记二 标题
学习新标签,标题 <html> <head> <title>tags</title> </head> <body> <h1 ...