标签: ios8-today-widget

今天扩展无法继承CoreMedia权限

我正在尝试将Swift中的Today Extension添加到我的Objective-C应用程序中.我在调试器日志中不断收到此消息:Failed to inherit CoreMedia permissions from 3005: (null).数字ex.3005每次都不同.我正在从小部件中读取NSUserDefaults,但我正在应用程序本身阅读/写作.我的TodayViewController中唯一的代码如下:

override func viewDidLoad() {
    super.viewDidLoad()

    let formatter = NSNumberFormatter()
    formatter.numberStyle = .CurrencyStyle
    totalLabel.text = formatter.stringFromNumber(0)
    coinsLabel.text = formatter.stringFromNumber(0)

    formatter.maximumFractionDigits = 0
    billsLabel.text = formatter.stringFromNumber(0)

}

func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
    return UIEdgeInsetsMake(8.0, 16.0, 8.0, 16.0)
}

func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {
    // Perform any setup necessary in order to update the view.

    // If an error is encountered, use NCUpdateResult.Failed
    // If there's no update required, use …
Run Code Online (Sandbox Code Playgroud)

swift ios-app-extension ios8-today-widget

65
推荐指数
6
解决办法
3万
查看次数

今天iPad的扩展高度远大于指定

My Today扩展需要基于窗口小部件显示的内容具有动态高度.我能够通过在最底部元素上添加约束来实现这一点:底部布局指南的顶部小于或等于最底部元素的底部,常量为0,优先级为999,乘数为1.

这与iPhone上的预期完全一样 - 小部件高度适合所有内容,并且在显示下一个小部件之前应用默认的底部边距.

但是在iPad上似乎将我的小部件的高度设置为等于最大高度通知中心将允许小部件 - 我的小部件下方有很多空间,它几乎全屏.

如何删除多余的空间?

我确切地知道问题是什么,但我不确定如何解决它 - 请参阅"问题"部分.首先让我解释一下设置:

设置:
我在故事板中设置了此扩展的视图,没有任何编程方式.视图由垂直堆叠的5个元素组成,其他一些元素水平堆叠.这些是从上到下的垂直线的自动布局约束 - 其中未声明的优先级为1000,乘数1:

UILabel: height = 35, top space to top layout guide with constant of 10
UIButton: equal height and width to a different button (whose aspect ratio is 1:1, there is no fixed width/height), top space to label 10
UIButton: equal height and width to same button, top space to above button 8
UIButton: equal height and width to same button, top space to above …
Run Code Online (Sandbox Code Playgroud)

ios autolayout ios8 ios-app-extension ios8-today-widget

51
推荐指数
1
解决办法
1511
查看次数

仅使用自动布局的iOS8今日扩展的高度给出了破坏的约束

Apple文档建议使用autolayout设置Today Extensions的高度.

如果窗口小部件具有要显示的其他内容,则可以依赖"自动布局"约束来适当调整窗口小部件的高度.如果不使用自动布局,则可以使用UIViewController属性preferredContentSize指定窗口小部件的新高度.

但是,我见过的每个示例和教程最终都会使用preferredContentSize.

我通过autolayout设置高度的所有尝试都会导致违反约束的警告.

通过Autolayout设置高度

我开始使用新的xcode模板和一个全新的扩展模板.我添加的唯一内容TodayViewController.m是:

- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets {
    return UIEdgeInsetsMake(0, 0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

注意:如果我只使用默认边距,我仍会遇到此问题.

我约束标签高度,将标签置于容器中心,并将容器高度限制为与标签高度相同:

约束高度

这应该导致一个标签在指定的高度填充容器,没有约束冲突.相反,我得到一个约束冲突:

2014-09-28 10:27:39.254 TodayExtension[61090:2672196] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch ios ios8 ios8-extension ios8-today-widget

43
推荐指数
2
解决办法
1万
查看次数

如何在Today扩展小部件上使用UIAutomation?

我正在尝试使用UIAutomation来测试iOS 8 Today扩展小部件.我可以将目标更改为扩展,启动它,但之后无法执行任何操作.

有没有人在使用UIAutomation扩展时有任何成功?

ios ios-ui-automation ios8 ios8-today-widget

23
推荐指数
1
解决办法
445
查看次数

今天运行扩展时的调试信息

调试今天的扩展应用程序时获得此调试信息

"主机连接<NSXPCConnection:0x170113560>来自pid 53的连接无效"

有谁知道这意味着什么?几乎每次调用"widgetPerformUpdateWithCompletionHandler"时都会显示.

ios ios8 ios8-today-widget

20
推荐指数
1
解决办法
3178
查看次数

如何重命名iOS 8 Today Widget?

我刚刚开始尝试在我的应用程序中添加iOS 8 Today Widget,到目前为止它还可以,但是我按照原始模板并使用TodayWidget作为其名称创建了我的小部件.在我的应用程序的Xcode文件的上下文中,目标/产品名称是好的.但遗憾的是,这个名称也显示在我的小部件上方的通知中心内.

我已经尝试在我的项目中跟踪与显示内容匹配的各种名称,但到目前为止,我还没有找到一个让我更新显示名称的名称.

有人有任何想法吗?

rename ios ios8-today-widget

18
推荐指数
3
解决办法
4502
查看次数

iOS Swift Today Extension:从容器应用程序导入类?

我有一个带有Today小部件的应用程序.我想使用容器应用程序中的模型类TodayViewController.swift.

这样的事情可能吗?

我将文件复制到Today Extension文件夹并尝试导入它.没有骰子.

我无法在文档中或在线找到答案.

谢谢

ios swift ios8-today-widget today-extension

18
推荐指数
1
解决办法
4099
查看次数

今天扩展在iOS 8.1.2上启动之前崩溃

我一直在制作今天的扩展程序,从Feed中下载文章并显示最新的文章.整个过程在iOS 8上运行良好,仍在iOS 8.1上运行,然后是iOS 8.1.2,我们开始抱怨今天的扩展程序不再起作用了.我尝试在iOS 8.1.2设备上进行调试,在扩展甚至启动之前,它崩溃了这个错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: <__NSConcreteUUID 0x174027280> 5AFB07AB-5DCD-46FE-8D07-44DE0F3789F2)'
Run Code Online (Sandbox Code Playgroud)

我已经阅读了这篇关于开发今天扩展时发生的频繁错误的帖子:http://www.atomicbird.com/blog/ios-app-extension-tip

Tom Harrington在帖子中说:

在iOS 8(以及其他最新版本)中,在Xcode的构建设置中启用模块意味着您无需明确列出要使用的所有框架.他们会自动找到.

但是今天扩展使用的NotificationCenter.framework不是这种情况.如果从构建设置中删除它,则不会收到任何构建警告或错误.但是当您尝试加载扩展时,您将从libextension.dylib中获得异常,并且您的扩展名将无法加载.异常消息没有启发性:

2014-08-16 12:06:53.793 TodayTestExtension [41313:6111763] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'* setObjectForKey:object不能为nil(key:<__ NSConcreteUUID 0x7fd729422390> ED3B42F8-66CD-4CB0- BCD5-F3DBA​​6F34DB5)'如果您正在进行今天的扩展,只需将该框架保留在构建设置中即可.它不应该在那里,但确实如此.

我的扩展程序在其构建设置中包含NotificationCenter.framework,但我怀疑我的问题可能在某种程度上类似.

有人遇到过类似的问题吗?知道怎么解决吗?

objective-c ios ios8-today-widget today-extension

16
推荐指数
2
解决办法
2291
查看次数

检测运行目标是App Extension还是iOS App

我有一个简单的应用程序,它也有iOS 8今日扩展(或小部件).我正在做的一件事是在我的应用程序和我的小部件之间共享代码类,因为这显然使我不必拥有相同代码的多个副本.除了我遇到的一个问题之外,这一切都很UIApplication sharedApplication好用,其中一个API 会出现错误,因为你无法在iOS 8 Widgets上使用它.

所以我想到的是,有一个简单的if语句,用于检查最终目标是否是本机应用程序,或者如果它是iOS 8小部件,然后根据需要添加代码.那会有用吗?

这是我的代码:

if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))
    {
        CGSize ssz = sz;
        sz = CGSizeMake(ssz.height, ssz.width);
    }
Run Code Online (Sandbox Code Playgroud)

如何更改此代码,以便可以执行以下操作之一:

  1. 仅运行/编译,如果最终目标是本机iOS应用程序而不是小部件.
  2. 或者检查目标平台上的API是否可用,如果是,则使用它?

我希望我的问题有道理,感谢你的时间,丹.

objective-c target ios ios-app-extension ios8-today-widget

16
推荐指数
1
解决办法
6542
查看次数

iOS应用内购买+今日扩展小部件

所以我有一个需要订阅的应用程序(通过IAP),它提供了一个Today Widget.在窗口小部件(以及应用程序内)中,我使用RMStore检查捆绑包中的App Receipt是否有活动订阅.它在沙盒中工作正常,包括通过TestFlight安装时.但是今天,该应用程序已获得Apple批准,一旦我测试了实时店内版本,当主应用程序看到用户在应用收据中购买时,今日扩展程序没有读取应用程序收据,因此没有订阅!

Today Extension和主应用程序都使用完全相同的代码来阅读应用收据并查找订阅信息.为什么它会在主应用程序中工作而不是扩展?这是一个已知的问题?它与RMStore而不是StoreKit本身有什么关系?我有什么聪明/不同的事情吗?

我想也许问题可能与收据验证有关 - 例如,捆绑标识符在沙盒中与扩展的App Store不同吗?

这真是令人沮丧,因为我没有办法测试任何可能的解决方案而不重新提交到App Store,然后在发布后对其进行测试,如果它被破坏则将其从商店中拉出来,否则我会让用户付费他们实际上没有得到的东西.

in-app-purchase ios rmstore ios8-today-widget today-extension

16
推荐指数
1
解决办法
1083
查看次数