标签: ios-app-extension

使用xib而不是storyboard的iOS App Extension

我正在为Today视图编写iOS 8 App Extension(小部件).xcode中的默认模板附带一个故事板.如何使用xib文件而不是故事板?

文件说,这是可能的,但我似乎无法弄清楚如何改变Info.plist文件以获得加载的厦门国际银行.

ios8 ios-app-extension

7
推荐指数
2
解决办法
3284
查看次数

屏幕截图Safari来自Share Extension

是否可以通过共享扩展程序在Safari中执行webview当前可见区域的屏幕截图?我可以使用Windows,但扩展不支持UIApplication,所以我无法访问该窗口.

xcode ios ios8 ios-app-extension

7
推荐指数
1
解决办法
904
查看次数

如何从ios8扩展应用程序跟踪崩溃报告?

我已经尝试过Crashlytics,它似乎不起作用,从容器应用程序崩溃崩溃但键盘扩展崩溃不发送任何报告.有任何想法吗?

crash-reports crashlytics ios8 ios-app-extension

7
推荐指数
1
解决办法
410
查看次数

NSFetchedResultsController 不跟踪来自应用程序扩展的 CoreData 更改

一年多以来,我几乎每天都在积极使用 StackOverflow,但这是我在这里问的第一个问题。没有其他问题能抓住我的确切问题。关闭解决方案不起作用或不适用于我的情况。

我在做什么

我正在开发一个带有共享扩展的 iOS 应用程序。扩展应用程序将链接保存到 CoreData 中,包含(主)应用程序,展示了使用 NSFetchResultsController 保存的此链接的列表。

主要的应用程序是 Xcode 提供的 Master-Detail 模板,修改非常小。

我创建了一个嵌入式框架来承载 CoreData 内容并设置一个应用程序组来托管 CoreData 并以通常的方式在应用程序之间共享它。

CoreData 部分工作正常:我可以将对象插入到 ContextObjectManager 中,只要我的主应用程序处于活动状态,我就可以立即在那里查询这个插入的对象。

问题

当 MasterViewController 无法更新 tableView 时,问题就开始了。我推断 NSFetchedResultsController 实例在主应用程序之外发生时不会跟踪 CoreData 更改。

我在听应用程序激活时尝试了一些方法:

func becomeActive(notification: NSNotification) {

    //Approach 1: Making sure to delete cache -- even though I do not have a persistent named cache file.        
    NSFetchedResultsController.deleteCacheWithName(nil)

    //Approach 2: Making sure to reload tableView data.
    self.tableView.reloadData()

    }
Run Code Online (Sandbox Code Playgroud)

它没有任何效果。

self.fetchedResultsController.sections![0].numberOfObjects它总是等于展示单元的数量。然后,如果我与扩展共享一些新的东西然后回来,这个数字不会改变,但DataManager.getAllManagedObjectsFromEntity(Link.entityDescription()).objects.count等于这个数量 + 1。

然后,当我关闭应用程序并再次打开它时,它会同步并且显示的单元格数 = 获取的对象数 = …

core-data nsfetchedresultscontroller ios swift ios-app-extension

7
推荐指数
1
解决办法
759
查看次数

点击自定义键盘按钮时如何播放tock声音

我一直在为iOS 8定制键盘工作一段时间,到目前为止一切都很顺利,但我仍然无法理解这种敲击声音.

我搜索了这个问题的高低,并尝试了几种方法,包括

  1. 使用AudioToolbox
  2. 使用AVFoundation
  3. 将tock.caf放入我的捆绑包中然后播放它

其中一些在模拟器中工作,但它们都不能在我的设备中工作.任何在点击自定义键盘按钮时成功播放声音的人都可以分享一些工作代码吗?如果代码可以遵守声音设置,那就是最好的.

keyboard audio ios ios8 ios-app-extension

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

如何调整不是SLComposeServiceViewController的子类的共享扩展视图控制器的视图大小?

我正在尝试制作共享应用扩展程序以处理来自Safari的网址.XCode项目模板提供了一个ViewController,它是一个子类SLComposeServiceViewController.我的问题是我的扩展程序不适合"标准"共享模板 - 我需要为它提供自定义UI.所以我将父类更改为普通的UIViewController.我的扩展程序继续在Safari中正常加载 - 我无法弄清楚如何调整UI的大小SLComposeServiceViewController.

我的ViewController正在使用设备的全宽x高度进行初始化,即使在我调用之后[self setPreferredContentSize:CGSizeMake(320.0f, 320.0f)];,如果不使用AutoLayout,建议使用,作为测试以查看大小是否减少,没有任何反应.

我已经在iOS 8 beta 5的模拟器和iPad上试过了.

ios8 ios-app-extension

6
推荐指数
1
解决办法
1392
查看次数

viewWillTransitionToSize:withTransitionCoordinator:未被调用

在我的ios8扩展中,ActionViewController(UIViewController的子类)viewWillTransitionToSize:withTransitionCoordinator:在旋转设备时不会调用.不应该吗?我需要做点什么吗?

我正在使用Xcode 6 beta 6(6A280e) - beta 7会导致编译错误,所以我还没有使用它.

xcode6 ios8 ios-app-extension

6
推荐指数
1
解决办法
1841
查看次数

今天,当widgetPerformUpdateWithCompletionHandler包含异步主体时,iOS 8的扩展问题

我正在使用iOS 8上提供的新的Today Extension.在设备上调试似乎非常困难,结果不一致所以我一直在使用模拟器.

我正在构建的扩展是一个非常简单的扩展,只是每天显示一个不同的图像,流程实际上非常简单:

  • iOS调用widgetPerformUpdateWithCompletionHandler
  • 我异步下载图像
  • 如果图像已成功下载,我在故事板上设置了相应的插座,并使用常量调用完成块:NCUpdateResultNewData
  • 如果发生错误,我使用常量调用完成块:NCUpdateResultFailed

根据Apple的参考文档,每次我们使用常量NCUpdateResultNewData调用完成块时,窗口小部件的快照应该更新到当前视图,但是,这不会一直有效,有时iOS似乎使用较旧的快照.

代码很简单,这里是widgetPerformUpdateWithCompletionHandler代码:

-(void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
__weak TodayViewController *weakSelf = self;
NSURL *URL = [NSURL URLWithString:@"http://www.muratekim.com/wp-content/uploads/apple-logo-small.png"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:
                              ^(NSData *data, NSURLResponse *response, NSError *error) {
                                  if (!error) {
                                      UIImage *image = [UIImage imageWithData:data];
                                      weakSelf.imageView.image = image;
                                      weakSelf.img = image;
                                      completionHandler(NCUpdateResultNewData);
                                  }
                                  else {
                                      completionHandler(NCUpdateResultFailed);
                                  }
                              }];
[task resume];
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!泽

objective-c ios ios8 ios-app-extension

6
推荐指数
0
解决办法
2185
查看次数

隐藏iOS 9中自定义键盘扩展名上方的工具栏

在iOS 9的iOS 9中,键盘上方有一个工具栏(称为快捷方式栏),提供撤消,重做和粘贴按钮.它在使用系统键盘或第三方键盘时出现,但它不会出现在表情符号键盘上方.我的自定义键盘扩展程序正在使用时,我不希望此工具栏可见,因为我的键盘类似于表情符号键盘.(请注意,我所说的是可以在任何应用中使用的自定义键盘扩展,而不是当文本字段成为您自己应用中的第一响应者时显示的键盘.)那么如何删除它呢?

ios ios-app-extension custom-keyboard

6
推荐指数
1
解决办法
2165
查看次数

文件提供程序iOS11 startProvidingItem未被调用

我正在为iOS 11实现文件提供程序扩展.

通过https://developer.apple.com/videos/play/wwdc2017/243/观看会议并浏览Apple的文档,我似乎无法理解如何实现NSFileProviderExtension和NSFileProviderEnumerator对象的某些方法.

我成功实现了NSFileProviderItem,其中所有这些都列在了Navite iOS 11文件应用程序中.但是,我无法触发任何基于文档的应用程序在选择文件时打开.

我覆盖了NSFileProviderExtension的所有方法.有些仍然是空的,但我设置了一个断点来检查它们何时被调用.

NSFileProviderExtension看起来像这样:

class FileProviderExtension: NSFileProviderExtension {
    var db : [FileProviderItem]  = [] //Used "as" a database
...

    override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {
        for i in db {
            if i.itemIdentifier.rawValue == identifier.rawValue {
                return i
            }
        }
        throw NSError(domain: NSCocoaErrorDomain, code: NSNotFound, userInfo:[:])
    }

    override func urlForItem(withPersistentIdentifier identifier: NSFileProviderItemIdentifier) -> URL? {
        guard let item = try? item(for: identifier) else {
            return nil
        }

        // in this implementation, all …
Run Code Online (Sandbox Code Playgroud)

ios swift ios-app-extension ios11 xcode9

6
推荐指数
1
解决办法
1867
查看次数