Iphone Sdk:是不是可以使用 UISwitch 来启用和禁用 PNS(推送通知服务)?

Posted

技术标签:

【中文标题】Iphone Sdk:是不是可以使用 UISwitch 来启用和禁用 PNS(推送通知服务)?【英文标题】:Iphone Sdk:Is it possible to use an UISwitch to enable and disable PNS(Push Notification Service)?Iphone Sdk:是否可以使用 UISwitch 来启用和禁用 PNS(推送通知服务)? 【发布时间】:2010-10-06 11:57:36 【问题描述】:

我找到了一些关于 PNS 的示例代码,article here

我还创建了一个 UISwitch 来启用 PNS

如何给出控制PNS的方法?

这就是我声明单元格的方式

cell.textLabel.text = @"PNS";
  [cell.textLabel setTextColor:[UIColor grayColor]];
  pushNotificationSwitch = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
  [cell addSubview:pushNotificationSwitch];
  cell.accessoryView = pushNotificationSwitch;
  [(UISwitch *)cell.accessoryView addTarget:self action:@selector(pushNotification:) forControlEvents:UIControlEventValueChanged];
 


- (void)pushNotification:(id)sender
 if (pushNotificationSwitch.on==YES) 
  UITableViewCell *cell = (UITableViewCell*)pushNotificationSwitch.superview;
  [cell.textLabel setTextColor:[UIColor blackColor]];
 
 else 
  UITableViewCell *cell = (UITableViewCell*)pushNotificationSwitch.superview;
  [cell.textLabel setTextColor:[UIColor grayColor]];
 
 

现在我只是使用单元格的文本标签颜色变化来表示开关调用方法

所以...我可以用它来控制 PNS 的启用与否???

感谢任何cmets和答案!

【问题讨论】:

【参考方案1】:

要使以下所有操作生效,您应该已向 Apple 注册推送通知服务作为通知提供者。

根据用户对Switch控件输入的选择,可以调用

注销远程通知

registerForRemoteNotificationTypes

.

如果用户想从 Notification 中注销,可以通过调用 unregisterForRemoteNotifications 方法来实现。

如果你想注册通知,你可以在你的 Application 对象上使用 registerForRemoteNotificationTypes 方法。

更多信息可以参考link。

更新:

你可以这样称呼它:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

[[UIApplication sharedApplication] unregisterForRemoteNotifications];

您可以使用我提供的链接了解更多信息。

【讨论】:

我在appdelegate.m声明了这两个方法,在其他地方还能调用吗? 如果您指的是“unregisterForRemoteNotifications”和“registerForRemoteNotificationTypes”,这两个可以在您的共享应用程序实例上调用。我已经更新了有关如何拨打电话的答案。 谢谢,我刚刚解决了 PNS 认证问题。如果可行,我现在就试试这个,我会告诉你的! 请问为什么每次打开开关,转到其他视图,再回到带开关的视图,就会变成关闭?如何记录我最后一次点击开关的状态? 您好,您可以在 View 消失(viewdiddisappear)时获取 switch 的状态,并存储在 NSUserDefaults 或全局变量中,并在 View 再次出现时将 Switch 设置为存储状态。跨度> 【参考方案2】:

您可以使用registerForRemoteNotificationTypes: 为您的应用激活 PNS,或使用 unregisterForRemoteNotifications 停用它。 请参阅http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instm/UIApplication/registerForRemoteNotificationTypes: 了解更多信息:

【讨论】:

如何把这个放到 - (void)pushNotification:(id)sender 中?你能给出一些示例代码吗?thx

以上是关于Iphone Sdk:是不是可以使用 UISwitch 来启用和禁用 PNS(推送通知服务)?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone SDK 是不是允许硬件访问扩展坞连接器?

iPhone SDK 3,Interface Builder:是不是可以从一组选定元素中取消选择一个元素?

为啥 iPhone SDK 对某些代表使用类别而不是协议?

Iphone 4 sdk - 如何确定 applicationWillEnterForeground 是不是因通知而被触发?

iPhone / iOS Facebook SDK - 您可以在应用内登录并保留登录凭据吗?

使用文本文件保存数据 iPhone sdk?