Tag: 小部件

如何在iOS后台运行服务来接收本地通知?

我正在开发应用程序,其中有一个与服务器的MQTT连接,服务器正在发送一些与设备和用户界面更改相关的值。 但是,当应用程序在后台用户应该得到本地通知,某些值被改变。 我知道后台服务不允许在iOS中,但我想确保这是没有办法做到这一点。 我通过UIApplication.shared.beginBackgroundTask在后台成功地添加了本地通知,但是只有在苹果终止应用之后,它才能正常工作3分钟。 func registerBackgroundTask() { backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in self?.endBackgroundTask() } assert(backgroundTask != UIBackgroundTaskInvalid) } func endBackgroundTask() { print("Background task ended.") UIApplication.shared.endBackgroundTask(backgroundTask) backgroundTask = UIBackgroundTaskInvalid } 而只是调用self.registerBackgroundTask()使应用程序在后台运行三分钟。 接下来我要去尝试的是后台抓取和小部件运行服务,在这里我只是想有一些build议,有没有什么机会,以上两个之一将工作?

iOS 8今日扩展:是否可以添加可编辑的文本字段?

我正在尝试创build一个简单的今天扩展。 我能够添加一个标签,其中的值可以通过主应用程序更新。 现在,我正在探索通过扩展来更新主应用程序中的值的可能性。 但是,当我试图添加一个文本字段,我不能input任何东西。 这是扩展的限制吗? 如果没有,请你指导我如何做到这一点? 非常感谢你!

今天小部件没有回应后更新应用程序

我今天遇到了一个奇怪的例子。 我的应用程序有一个小部件,向我们的用户显示一些信息,小部件上有一些button。 用户可以点击button获取不同的信息。 这是奇怪的事情。 我正在开发我的应用程序的新版本。 我需要testing它。 当我在旧版本上安装一个新的特设版本的应用程序时,我的小部件没有响应。 没有更新,没有响应,当我点击button。 所以我做了一些testing用例来解决它。 我在手机上安装了一个新的特别版本应用程序,没有旧版本的应用 小部件可以响应。 我安装了比应用程序商店更旧的testing应用程序,然后从应用程序商店更新它,Widget可以resond。 我安装了比应用程序商店更旧的testing应用程序,但是从应用程序商店中的相同版本的专用存档更新它,Widget无法响应。 如果我删除小部件并将其添加到今天查看,小部件仍然无法回应。 如果我重新启动我的iphone,所有无法响应的部件可以再次响应。 任何人都面临同样的情况? 任何帮助将受到欢迎。 谢谢。

如何以编程方式在iOS8上创build一个Today小部件?

我试图删除故事板文件和相关的Info.plist条目,但这次扩展停止工作; 它甚至不从XCode启动。 The operation couldn't be completed. (LaunchServicesError error 0.) 在常规应用程序(包含应用程序)上很容易,因为我们看到它是入口点和应用程序委托,但是如何在扩展上进行呢?

iOS 8 beta – 今天扩展不能识别embedded式框架

我正在写一个应用程序,它也有一个今天扩展(或小工具)。 苹果推荐的在扩展之间共享代码并包含应用程序的方法是将共享代码放入应用程序和扩展可以使用的embedded式框架中。 所以据我了解,我应该编写共享代码,并将共享代码作为目标框架,然后让应用程序和扩展都将框架声明为依赖项。 然而,在实践中,我发现,虽然应用程序认识到框架很好,但今天扩展没有。 更具体地说:我将一个简单的表格视图放在我的今天的扩展名(我将称之为“小工具”)和作为我的应用程序(我将称为“应用程序”)中的一个选项卡,然后一个框架(我将称之为“框架”)与共享代码。 Widget附带一个包含表格视图的TodayViewController。 这个表格视图有一个自定义的单元格,我打电话给CalendarCell。 所以相关的共享类/文件是: TodayViewController.h /米 CalendarCell.xib CalendarCell.h /米 然后,当然,我有我的Widget故事板和应用程序故事板,这是不共享的。 所以,在我的App目标构build阶段,我将Framework作为目标依赖项,同时也将Widget作为目标依赖项(创build目标时就是这样的,删除它似乎没有任何帮助)。 同样,在Widget目标构build阶段,我将Framework作为目标依赖项。 框架将TodayViewController.m和CalendarCell.m列为编译源,将CalendarCell.xib列为束资源。 所以这里出了什么问题:如果Widget没有列出CalendarCell.m,TodayViewController.m和CalendarCell.xib作为编译源和捆绑资源,那么这个Widget不起作用。 具体来说,如果没有列出TodayViewController.m,那么应用程序甚至无法在模拟器中运行(我得到了这个人得到的同样的错误)。 如果TodayViewController.m被列出,但其他任何源文件/资源​​都没有,那么我会得到一个没有内容的扩展(和其他人一样 )。 请注意,应用程序确实认可框架就好,不必将这些文件列为编译源或捆绑资源 – 这只是失败的Widget。 如果有人有这个想法,我会感激。 一个Xcode 6 / iOS 8的错误? 或者我做错了什么?

保存和加载数据在今天扩展(iOS 8)

是否有可能使用NSUserDefaults在Today Extension上保存和加载数据? closures通知中心后,小部件的行为就像一个终止的应用程序,所以任何数据结果都会丢失。 我怎么能解决这个问题? 这是我的代码: NSUserDefaults *defaults; – (void)viewDidLoad { [super viewDidLoad]; defaults = [NSUserDefaults standardUserDefaults]; NSArray *loadStrings = [defaults stringArrayForKey:@"savedStrings"]; if ([loadStrings objectAtIndex:0] != nil) { [display setText:[NSString stringWithFormat:@"%@", [loadStrings objectAtIndex:0]]]; } if ([loadStrings objectAtIndex:1] != nil) { calculatorMemory = [NSString stringWithFormat:@"%@", [loadStrings objectAtIndex:1]].doubleValue; } } – (IBAction)saveData:(id)sender { NSString *displayString; NSString *memoryString; NSArray […]