核心蓝牙状态保持和恢复不工作,无法重新启动应用程序到后台

我试图让核心蓝牙唤醒应用程序,即使它没有运行。 正如苹果指出的那样,“由于状态保存和恢复是内置在蓝牙芯片中的,因此您的应用可以select使用此function来要求系统保留您应用的中央和外围pipe理员的状态,并继续执行某些与蓝牙相关的任务即使你的应用程序不再运行,当这些任务中的一个完成时,系统将把你的应用程序重新启动到后台,让你的应用程序有机会恢复它的状态并适当地处理事件。 我添加了以下代码来join此function: myCentralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{ CBCentralManagerOptionRestoreIdentifierKey: @"myCentralManagerIdentifier" }]; 但是,应用程序醒来时的callback从未触发过。 -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { } -(void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary *)state { } 这两个从来没有被称为。 我正在testing这个唤醒function的方式: 我在info.plist中添加了背景模式下的“bluetooth central”,所以BLE在后台运行。 在我的iphone 1号启动centralManager。 开始扫描。 按回家,出门,玩一些记忆沉重的游戏,在debugging日志中,我会看到:“由于内存压力终止,处理完成退出代码0”。 这是为了模拟由于内存压力,ios系统如何终止后台应用程序。 用另一个iphone 2号启动一个灯塔并开始播放。 结果:那些重新启动callback从未被调用。 任何想法,为什么这是行不通的? 如果是API问题,当您的手机靠近BLE信标时,是否有其他方法可以将您的应用程序重新启动为BLE后台? 我已经尝试使用ibeacon来唤醒应用程序,但核心蓝牙中央pipe理器不会允许您在后台连接ibeacon。 谢谢!

UIScrollView自定义分页

我的问题与我正在尝试使用滚动器的自定义分页forms有关,如果您首先考虑在老虎机中实现的滚动视图的types,则更容易可视化。 所以说我的UIScrollView有100像素的宽度。 假设它包含3个内部视图,每个视图的宽度为30个像素,使得它们以3个像素的宽度分隔。 我想实现的分页types是,每个页面是我的意见(30像素)之一,而不是滚动视图的整个宽度。 我知道,通常,如果视图占用整个滚动视图的宽度,并启用分页,那么一切正常。 但是,在我的自定义分页中,我也希望滚动视图中的周围视图也可见。 我将如何做到这一点?

如何复制UILabel?

我有IBOutlet UILabel *label; 我想这样做 UILabel *label = [titleLabel copy]; label.text = @"Clone"; titleLabel.text = @"Original"; NSLog(@"label : %@, title : %@",label.text,titleLabel.text); 这抛出exception *由于未捕获exception'NSInvalidArgumentException',原因:' – [UILabel copyWithZone:]:无法识别的select器发送到实例0x6a4a450'*终止应用程序*第一次抛出调用堆栈:(0x126f052 0x1823d0a 0x1270ced 0x11d5f00 0x11d5ce2 0x1271bd9 0x2ed6 0x1270e1a 0x2851 0x28264e 0x1e2a73 0x1e2ce2 0x1e2ea8 0x1e9d9a 0x24af 0x1ba9d6 0x1bb8a6 0x1ca743 0x1cb1f8 0x1beaa9 0x215cfa9 0x12431c5 0x11a8022 0x11a690a 0x11a5db4 0x11a5ccb 0x1bb2a7 0x1bca9b 0x21c2 0x2135)

如何检测iPhone何时通过JavaScript进入横向模式? 有这个事件吗?

我正在写一个针对iPhone的网站。 我想在iPhone的方向发生变化时(即用户将手机变成横向和/或纵向模式)在<body>元素上设置一个类。 我可以通过JavaScript检测到这个变化吗? 有这个事件吗?

iPad MPMoviePlayerController – 禁用全屏

有没有办法来禁用MPMoviePlayerController的全屏button?

Objective-C的代码,以正确的垫NSString?

有人可以给一个代码示例如何在Objective-C中正确填充NSString吗? 比如想要这些string: Testing 123 Long String Hello World Short 如果右填充到12的列宽度,然后在每个的末尾添加一个刺痛的“XXX”,则会给出: Testing 123 xxx Hello World xxx Short xxx 这是第二列想起来。

停留在Swift和MapKit中使用MKPinAnnotationView()

我有一个工作循环来设置一些工作数据点的标题和字幕元素的注释。 我想在同一个循环结构中做的是将引脚颜色设置为紫色而不是默认值。 我无法弄清楚是我需要做什么来挖掘我的地图视图相应地设置引脚。 我的工作循环和一些尝试… …. for var index = 0; index < MySupplierData.count; ++index { // Establish an Annotation myAnnotation = MKPointAnnotation(); … establish the coordinate,title, subtitle properties – this all works self.theMapView.addAnnotation(myAnnotation) // this works great. // In thinking about PinView and how to set it up I have this… myPinView = MKPinAnnotationView(); myPinView.animatesDrop […]

随机获取“facebookErrDomain错误10000”

我正在使用最新的Facebook IOS SDK,并且在使用requestWithGraphPath时"facebookErrDomain error 10000"随机"facebookErrDomain error 10000" 。 我可以触发来自UI的请求,有时它运行良好,有时会给我错误。 有没有人遇到类似的问题?

iOS:产品推送通知,来自APNS服务器的无效令牌

我的应用程序现在在应用程序商店,所以我已经下载到我的设备。 推送通知在开发过程中正常工作。 我正在使用JavaPNS发送通知,并将其切换为指向Apple的生产服务器。 但是,我现在正在从APNS服务器收到无效令牌错误。 我有存档scheme设置为“释放”,我有释放设置使用此分布configuration文件: 在configuration文件中,您可以看到我正确设置了环境: 但是我仍然得到错误。 当我查看我的数据库时,我认为应用程序返回给我的设备令牌与开发者相同,因此可能是问题所在。 但我不知道为什么它会返回,鉴于该应用程序是正确签署。 这是我也用于testing的一个设备,可能是一个问题? 任何其他的想法在这里发生了什么? 谢谢! 编辑:我没有在我的代码存储令牌,伊兰的答案表明,唯一的其他可能性是我的数据库中旧的令牌,或应用程序没有被生产configuration文件签名。 我清除了我的数据库,所以我知道这不是前者,至于后者,我不明白这是怎么回事,因为我只有一个分布configuration文件,正如我上面显示的那样正确设置了“aps-environment”键。 XCode甚至不会让我使用app store提交的开发configuration文件,是吗? 其他一些可能性: 我用通知发送的密钥有可能会导致“无效的令牌”? 如果是这样,我可以为我现有的configuration文件重新生成此密钥吗? 用于推送通知的AppID中没有包含另一个configuration文件? 可能会导致无效令牌错误的问题?

如何找出触摸事件结束的视图?

我希望将UIImage拖放到其中一个UIButton上,然后根据我将其拖到哪个button来重新定位UIImage。 我碰到的问题是,UITouch只logging我的触摸开始的视图,我想访问我的触摸结束的视图。 我怎样才能做到这一点? 码: -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint location = [touch locationInView:self.view]; dealerBtnOrigin = [touch locationInView:self.view]; //NSLog(@"%u %u",touch.view.tag, ((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]]).tag); //CHECK TO SEE WHICH BUTTON WAS TOUCHED if (touch.view == ((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]])) { ((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]]).center = location; } } -(void)touchesMoved:(NSSet *)touches […]