首先初始化一个switch,如下:
我是在cell里面创建的,
然后实现switch的方法:
这里的话,通过判断switch的状态,yes或是no来控制关闭的,因为app首次运行的话,是有一个注册通知的提示框,点击好以后,就可以接受到apns的推送服务了,如果用户点击不允许的话,是不能接收到推送的!切记!
注意这里面的状态判断:1,声明一个bool变量,根据key值取出来,进行关联,注意这样的话,有一个问题,就是switch默认的状态是no,所以如果就直接这样写的话,用户首次运行,apns的服务默认是关闭的,当然这是不合逻辑的,首次肯定是yes,默认打开,所以swich得状态也肯定得是打开的;
2,解决方法:在注册推送的时候一个方法,就是注销之后再重新注册的方法:当然了需要加一个判断
我写的是只有状态不是no就让他走这个方法,如图
注意:这三段代码中有2个地方有取反的状态,还有就是在实现switch点击方法的时候需要做的是,在swith取出来状态是yes的时候,让isOneSwitch的状态为no,反之也是,然后在初始化swith的时候,取反,这样的话,就可以实现默认swith是yes,对swith进行操作之后的状态就可以存储!
取消推送通知的方法有2个:
1)[XGPush unRegisterDevice];//注销设备 这个是信鸽官方提供的方法,完美解决问题!
2)[[UIApplication sharedApplication] unregisterForRemoteNotifications];//注销通知 用这个方法,可以达到效果,但是我自己测试的结果是会受到3条信息,一次性,如果有大神指导,请指教!
时间: 2024-10-11 13:59:17