iPhone开发基础学习 在程序里设置Push是本文要介绍的内容,最近做项目有一个需求,要在程序得系统设置里进行push的设置。在网上搜了几天资料没找着啥。今天忽然心血来潮跟踪系统注册push时得代码,居然发现有可行得解决方法,思路如下:
1、在iphone得framework里的UIApplication.h中有以下函数:
- @interface UIApplication (UIRemoteNotifications)
- - (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- - (void)unregisterForRemoteNotifications __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- // calls -registerForRemoteNotificationTypes with UIRemoteNotificationTypeNone
- // returns the enabled types, also taking into account any systemwide settings; doesn't relate to connectivity
- - (UIRemoteNotificationType)enabledRemoteNotificationTypes __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- @end
2、首先可以用[[UIApplication sharedApplication] enabledRemoteNotificationTypes]获取到允许得push推送类型。然后再调用registerForRemoteNotificationTypes进行修改。若要关闭程序得push服务,可调用unregisterForRemoteNotifications.
3、补充:以上想法以实现。补充部分代码。settingsData为tableview的数据源数组
a、获取系push设置,用于显示给用户
- //push设置
- NSMutableArray * pushOptions = [[NSMutableArray alloc] init];
- UIRemoteNotificationType notificationType = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
- NSMutableDictionary * soundNotice = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
- @"声音", @"name",
- @"0", @"status",
- nil];
- if (notificationType & UIRemoteNotificationTypeSound) {
- [soundNotice setValue:@"1" forKey:@"status"];
- }
- [pushOptions addObject:soundNotice];
- [soundNotice release];
- NSMutableDictionary * alertNotice = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
- @"提醒", @"name",
- @"0", @"status",
- nil];
- if (notificationType & UIRemoteNotificationTypeAlert) {
- [alertNotice setValue:@"1" forKey:@"status"];
- }
- [pushOptions addObject:alertNotice];
- [alertNotice release];
- NSMutableDictionary * badgeNotice = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
- @"标记", @"name",
- @"0", @"status",
- nil];
- if (notificationType & UIRemoteNotificationTypeBadge) {
- [badgeNotice setValue:@"1" forKey:@"status"];
- }
- [pushOptions addObject:badgeNotice];
- [badgeNotice release];
- NSDictionary * pushConfig = [[NSDictionary alloc] initWithObjectsAndKeys:
- @"通知设置", @"groupName",
- pushOptions, @"data",
- nil];
- [self.settingsData addObject:pushConfig];
- [pushOptions release];
- [pushConfig release];
b、获取用户设置的数据放入pushdata,然后向系统提交设置
- NSArray * pushData = [[settingsData objectAtIndex:indexPath.section] objectForKey:@"data"];
- NSInteger length = [pushData count];
- UIRemoteNotificationType myType = 0;
- for (NSInteger i =0; i< length; i++) {
- if ([[[pushData objectAtIndex:i] objectForKey:@"status"] intValue] ==1) {
- switch (i) {
- case 0: myTypemyType = myType|UIRemoteNotificationTypeSound; break;
- case 1: myTypemyType = myType|UIRemoteNotificationTypeAlert; break;
- case 2: myTypemyType = myType|UIRemoteNotificationTypeBadge; break;
- default: break;
- }
- }
- }
- if (myType != 0) {
- [[UIApplication sharedApplication] registerForRemoteNotificationTypes:myType];
- }else {
- [[UIApplication sharedApplication] unregisterForRemoteNotifications];
- }
希望以上思路对有这方面需求得人有帮助。以上方案我暂未用于代码实现。若有问题。请留言共同商讨。
小结:iPhone开发基础学习 在程序里设置Push的内容介绍完了,希望本文对你有所帮助1更多相关内容请参考编辑推荐。