ios后台推送那点事
2014-04-12 10:49
204 查看
近期做个项目要使用推送,虽然以前也做过,但没有仔细研究过,于是就趁着这次机会好好研究一把。以前做推送,都是生成cer文件,把文件教给服务器端处理。这次要自己对服务器处理,的确在这上费了一番周折。但在参考过这篇文章(http://blog.csdn.net/showhilllee/article/details/8631734)之后,就很快解决了。
接下来就是对客户端上的设置了。在客户端上首先注册推送功能,注册成功后,把tokenid发送到服务器。这样服务器就可以通过apns向你发送推送了。这些解决后,就需要对推送进行一些细节设置了。
第一个问题就是用户想在应用关闭推送,这个不难,想关闭推送就用[[UIApplicationsharedApplication]unregisterForRemoteNotifications];解绑推送。想要推送了就再用
[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound
|UIRemoteNotificationTypeAlert)];增加上。
第二个问题是在应用内关闭铃声和关闭震动,这个本来以为可以通过代码实现,通过观察QQ,网易新闻,墨迹天气等软件之后,得出需要与服务器交互,让服务器在下发报文时来做设置,这样就需要在你的程序中至少设置两段音频文件放在mainbundle中,一段是有声音的,一段是没有声音的就是静音文件(http://pan.baidu.com/s/1bnowCKv,在这里下载),这里文件格式一般为caf、wav(具体可以看官方文档,我只测试了这两种)。如果要只有震动,需要你在发送的报文中设置sound的文件名位mute.wav,这样就只有震动了。如果你要各种声音设置,如QQ,你需要设置不同的声音文件名了。如果你连震动都不要了,那在发送报文时直接去掉sound字段就可以了。如果后台推送只想关闭震动还要声音,这个是实现不了的(这是我通过QQ观察出来的,如果有疑问,欢迎讨论)。这里需要与服务器做交互,把各种需求上传到服务器,让服务器做判断。
第三个文件就是badgenumber的设置问题,这个一般是从报文来设置的,在报文中设置badge的数值。但这里有不同,如果是新闻类软件,就不需啊计算有多少个推送消息,每次设为1就可以,但这里需要在程序becomeactive时设为0。用于清除推送消息数量并取出图标上的badgenumber标示。这样也会把推送消息去掉。而网易新闻就直接不设置badge,这样只会在阅读某条推送消息时才清除推送消息,你也可以手动在通知中心删除。但QQ的是先接到badge设置到图标上,在进入程序时置零,然后客户端通过服务器拉取未读消息,拉取下来后再设置badgenumber的值,这样如果你没有阅读未读消息,那么在图标上还是会显示相应的未读条数。
目前只研究这么多,如果有疑问,欢迎大家来讨论。
接下来就是对客户端上的设置了。在客户端上首先注册推送功能,注册成功后,把tokenid发送到服务器。这样服务器就可以通过apns向你发送推送了。这些解决后,就需要对推送进行一些细节设置了。
第一个问题就是用户想在应用关闭推送,这个不难,想关闭推送就用[[UIApplicationsharedApplication]unregisterForRemoteNotifications];解绑推送。想要推送了就再用
[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound
|UIRemoteNotificationTypeAlert)];增加上。
第二个问题是在应用内关闭铃声和关闭震动,这个本来以为可以通过代码实现,通过观察QQ,网易新闻,墨迹天气等软件之后,得出需要与服务器交互,让服务器在下发报文时来做设置,这样就需要在你的程序中至少设置两段音频文件放在mainbundle中,一段是有声音的,一段是没有声音的就是静音文件(http://pan.baidu.com/s/1bnowCKv,在这里下载),这里文件格式一般为caf、wav(具体可以看官方文档,我只测试了这两种)。如果要只有震动,需要你在发送的报文中设置sound的文件名位mute.wav,这样就只有震动了。如果你要各种声音设置,如QQ,你需要设置不同的声音文件名了。如果你连震动都不要了,那在发送报文时直接去掉sound字段就可以了。如果后台推送只想关闭震动还要声音,这个是实现不了的(这是我通过QQ观察出来的,如果有疑问,欢迎讨论)。这里需要与服务器做交互,把各种需求上传到服务器,让服务器做判断。
第三个文件就是badgenumber的设置问题,这个一般是从报文来设置的,在报文中设置badge的数值。但这里有不同,如果是新闻类软件,就不需啊计算有多少个推送消息,每次设为1就可以,但这里需要在程序becomeactive时设为0。用于清除推送消息数量并取出图标上的badgenumber标示。这样也会把推送消息去掉。而网易新闻就直接不设置badge,这样只会在阅读某条推送消息时才清除推送消息,你也可以手动在通知中心删除。但QQ的是先接到badge设置到图标上,在进入程序时置零,然后客户端通过服务器拉取未读消息,拉取下来后再设置badgenumber的值,这样如果你没有阅读未读消息,那么在图标上还是会显示相应的未读条数。
目前只研究这么多,如果有疑问,欢迎大家来讨论。
相关文章推荐
- [AIR Mobile] air 移动开放,usb调试,后台推送,配置文件,ios设置
- iOS 怎么自定制推送声音呢?(APP运行时和APP进入后台时)
- IOS 基于APNS消息推送原理与实现(JAVA后台)
- iOS,APP退到后台,获取推送成功的内容并且语音播报内容。
- Unity3D IOS后台推送
- iOS极光推送(接收后台消息和自定义消息)
- (转)IOS 基于APNS消息推送原理与实现(JAVA后台)
- iOS推送实现 + JAVA后台
- IOS 基于APNS消息推送原理与实现(JAVA后台)
- [AIR Mobile] air 移动开放,usb调试,后台推送,配置文件,ios设置
- c#后台 极光推送到Android 和IOS客户端
- iOS和Android的后台推送工作原理各是如何?
- 制作IOS 后台推送时,如何获取设备Token
- iOS推送的Java后台代码
- IOS 基于APNS消息推送原理与实现(JAVA后台)
- iOS 远程推送(极光推送) 根据后台推送内容的不同跳转指定页面(不断更新)
- IOS 基于APNS消息推送原理与实现(JAVA后台)
- IOS 基于APNS消息推送原理与实现(JAVA后台)
- IOS 基于APNS消息推送原理与实现(JAVA后台)--转
- iOS 远程推送 (swift +java后台)