本地通知在模拟器中工作,但在我的实际设备上测试时不起作用

时间:2015-10-15 04:51:57

标签: ios objective-c iphone notifications local

我有一个定时器,该函数调用一个本地通知计时器,设置了秒数,它应该运行直到被一个按钮停止。

一切都在我的viewcontroller.m文件中。

这是我的代码:

FAIL: test_scale (__main__.Test_svg_glyph)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "svg_glyph_test.py", line 322, in test_scale
    self.assertEqual(result, exp_result, "Test_svg_glyph_scale test #" + str(test_num))
AssertionError: glyph[15 chars]5000,-0.5000) 
       l(0.0000,1.0000) 
      [75 chars]   ]) != glyph[15 chars]5000,0.5000) 
       l(0.0000,1.0000) 
       [74 chars]   ]) : Test_svg_glyph_scale test #1

我的通知即将结束。

maxDiff

1 个答案:

答案 0 :(得分:0)

我的第一个建议会在主回路上设置你的计时器。

没有财产:

dispatch_async(dispatch_get_main_queue(), ^{
   // Enclose your timer code here
   [NSTimer scheduledTimerWithTimeInterval:num1 target:self selector:@selector(notification) userInfo:nil repeats:YES];
});

如果您想保留您的财产:

__weak MyViewController *aBlockSelf = self;

dispatch_async(dispatch_get_main_queue(), ^{
   // Enclose your timer code here
   aBlockSelf.showTimer = [NSTimer scheduledTimerWithTimeInterval:num1 target:self selector:@selector(notification) userInfo:nil repeats:YES];
});

其次,您不需要像这样继续参考您的计时器 - > self.ShowerTimer。这是因为Run Loop保留了对重复计时器的强引用。

第三,您的变量命名约定已关闭。 ShowerTimer应命名为showerTimer。虽然这与你的问题无关。

最后,您的代码看起来很好,如果通知正在模拟器上运行,请检查您设备上的请勿打扰设置。它应该关闭以显示本地通知。