【发布时间】:2013-01-11 01:45:15
【问题描述】:
我只是想在将 Pass 添加到存折时收到通知。
需要注意的一点是,我还尝试使用我使用与我的应用程序使用的不同的苹果开发帐户生成的通行证。我试图弄清楚这是否是问题的一部分。
这是一个 3-tab 应用程序中的 VC。
ViewController.m:
@interface ViewController ()
{
PKPassLibrary *_passLibrary;
NSArray *_passes;
}
@end
“viewDidLoad”:
- (void)viewDidLoad
{
//init passbook
_passLibrary = [[PKPassLibrary alloc] init];
_passes = [_passLibrary passes];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(passLibraryDidChange:) name:PKPassLibraryDidChangeNotification object:_passLibrary];
}
和我的通知处理程序:
- (void)passLibraryDidChange:(NSNotification *)notification
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%@", @"passes added");
});
}
当我在 iOS 模拟器中运行应用程序时,一切正常,我可以在 Xcode 中看到控制台的日志输出。
当我在设备上运行时,添加 Pass 时不会调用通知。在设备上,我什至无法列出任何通行证。
更奇怪的是,当我从存折中删除通行证,然后重新进入应用程序时,会调用通知。
ps:我真的希望我在这里缺少一些简单的东西。
编辑:更新了更多信息和更完整的代码示例
【问题讨论】:
-
在我的情况下,没有被调用的唯一原因是因为我没有将
PKPassLibrary与@property包裹起来(在 ARC 下)。