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 3,Interface Builder:是不是可以从一组选定元素中取消选择一个元素?
Iphone 4 sdk - 如何确定 applicationWillEnterForeground 是不是因通知而被触发?