第一个问题就是用户想在应用关闭推送,这个不难,想关闭推送就用[[UIApplicationsharedApplication]unregisterForRemoteNotifications];解绑推送。想要推送了就再用

[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound 
|UIRemoteNotificationTypeAlert)]

;增加上。

         第二个问题是在应用内关闭铃声和关闭震动,这个本来以为可以通过代码实现,通过观察QQ,网易新闻,墨迹天气等软件之后,得出需要与服务器交互,让服务器在下发报文时来做设置,这样就需要在你的程序中至少设置两段音频文件放在mainbundle中,一段是有声音的,一段是没有声音的就是静音文件(http://pan.baidu.com/s/1bnowCKv,在这里下载),这里文件格式一般为caf、wav(具体可以看官方文档,我只测试了这两种)。如果要只有震动,需要你在发送的报文中设置sound的文件名位mute.wav,这样就只有震动了。如果你要各种声音设置,如QQ,你需要设置不同的声音文件名了。如果你连震动都不要了,那在发送报文时直接去掉sound字段就可以了。如果后台推送只想关闭震动还要声音,这个是实现不了的(这是我通过QQ观察出来的,如果有疑问,欢迎讨论)。这里需要与服务器做交互,把各种需求上传到服务器,让服务器做判断。