标签: uidocumentinteraction

iOS App-to-App使用新的Document Support API传输数据

问题:


构建套件的企业应用程序自然,并且需要能够将数据从一个应用程序传递到另一个应用程序.示例:App1是生成和库存清单的条形码阅读器.App2需要App1刚刚生成的相同库存清单信息的"新鲜"副本,以实现其生成采购订单的目标.这两个应用程序和数据库是在单个应用程序中挤压在一起的两个大型应用程序和数据库,此外该套件将随着越来越多的应用程序而继


理解:


我完全理解"每个"应用程序都在它自己的沙箱中.但是,在阅读有关新UIDocumentInteractionController API的文档时,看起来应用程序可以在沙盒外面稍微倾向于"读入","查看"或"打开"一个不分开的文档捆绑或在应用程序中创建.


数据流:


我想保持简单.我一直在使用从Apple下载的DocInteraction示例应用程序,以及另一个名为App1的应用程序来尝试使用简单的文本文件.在App1中,我创建了一个简单的txt文件,并将其保存到文档文件夹中.(但这仍然在应用程序的沙箱中?).在DocInteraction修改过的示例中,我一直试图找到一种方法来"查看","打开",或者更好地"读入"创建的txt文件.如果我可以在两者之间传递一个简单的txt文件,我可以包含一个CSV结构,以便在打开应用程序时更新每一侧的数据库.

我试图利用启动选项键没有运气.

简而言之,我似乎无法理解:

  1. App1的数据需要去哪里?
  2. 如何在App2中找到其他应用程序中的数据?
  3. 如何"打开"另一个应用程序沙箱中存在的文件?

最终结果:我试图远离

文档交互文档概述:

  • 预览文档或显示选项
  • 注册您对文件类型的支持
  • 从其他应用程序打开文件
  • 显示和打印快速查看预览

这是我最感兴趣的" 从其他应用程序打开文件 ".它指示我通过传入键的字典值来使用应用程序:didFinishLaunchingWithOptions:方法.这是我迷路的地方?如何设置密钥以使其知道要查找的"WHERE"和"WHAT"?我仍然不清楚App1应该保存信息的正确导演,以便键指向正确的位置?


在iBooks中打开电子邮件文件附件和打开pdf不是唯一可以使用此API的地方,否则Apple将无法完成所有工作,他们已经允许从App-To-App进行通话.


注意: 我不是想让App1直接将数据传输到App2的文件中.我认为苹果根本不允许这样做!我正在尝试让App1压缩其数据,将其保存在适当的位置,因此当用户决定使用App2时,可以通过"读入"数据将数据提供给App2.


如果有人有一个示例应用程序,教程,甚至一个坚实的想法如何让这个工作,我真的很感激帮助.

-谢谢!

PS有1,500或更高信誉的人请为stackoverflow创建一个"UIDocumentInteraction"标签!

database iphone sharing ios4 uidocumentinteraction

8
推荐指数
1
解决办法
5814
查看次数

独家iOS UTI

我正在尝试为我的iOS应用程序创建/导出独有的UTI类型(非常类似于Instagram独家处理UTI com.instagram.exclusivegram的方式).

基本上,我想com.photoapp.photo是一个应用程序可以使用,如果他们希望能够在任何注册拍照的应用程序中打开照片(类似于Instagram的com.instagram.photo).然后我想com.photoapp.exclusive只能在我的应用程序中打开(类似于com.instagram.exclusivegram).

我在设备上遇到的是即使使用com.photoapp.exclusive,UIDocumentController也会提示我在PhotoApp或DropBox中打开它,它应该只是PhotoApp.

我有我的应用程序注册UTI以及我用来检查开放能力的示例应用程序.我在示例应用程序中使用的代码如下:

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"photoapp://"]]) {
        NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"derp.png"], 1.0);
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *fullPathToFile = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"photoapp.pae"];
        [imageData writeToFile:fullPathToFile atomically:NO];

        interactionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"file://%@", fullPathToFile]]];
        interactionController.UTI = @"com.photoapp.exclusive";
        interactionController.delegate = self;

        [interactionController presentOpenInMenuFromRect:self.view.frame inView:self.view animated:YES];
    }
Run Code Online (Sandbox Code Playgroud)

以下是我的app文件中的plist文件:

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeDescription</key>
        <string>Exclusive PhotoApp Photo</string>
        <key>UTTypeConformsTo</key>
        <array>
            <string>com.photoapp.photo</string>
        </array>
        <key>UTTypeIdentifier</key>
        <string>com.photoapp.exclusive</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>pae</string>
        </dict>
    </dict>
    <dict>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>pa</string>
        </dict>
        <key>UTTypeIdentifier</key>
        <string>com.photoapp.photo</string>
        <key>UTTypeDescription</key>
        <string>PhotoApp …
Run Code Online (Sandbox Code Playgroud)

iphone uti ios uidocumentinteraction instagram

8
推荐指数
1
解决办法
3497
查看次数

ios iphone挂钩直接打开instagram而不显示UIDocumentInteractionController

我正在我的应用程序中通过instagram集成共享图像.我已经阅读了他们的文档.

似乎我需要使用iOS UIDocumentInteractionController来允许这个(我知道它允许访问我的应用程序的沙箱中的文件).

深入挖掘,我遇到了这个图书馆,这让事情变得非常简单.

我遇到的问题是它提供了动作表(只有一个按钮--Losk ...)如何使用Instagram钩子,使用UIDocumentInteractionController而不显示动作表.我遇到的这个问题几乎是一样的,但过时却没有答案.

ios uidocumentinteraction instagram uidocument

8
推荐指数
2
解决办法
2318
查看次数

如何检查是否有任何应用程序与文件扩展名相关联

我想在我的iOS应用程序中制作"Open in .."功能.

有没有办法检查此设备上的任何应用是否与我要共享的文件扩展名相关联?

如果当前设备上没有应用程序打开具有此类扩展名的文件,UIDocumentInteractionController而不是在单击"打开方式..."按钮后显示,但我不希望在这种情况下显示此按钮.

所以问题是:如何检查设备上的任何应用程序是否可以打开某个具有特定扩展名的文件?


更新:

例如UIDocumentInteractionController具有NSArray财产icons.

它包含可以使用我的扩展名打开文件的所有应用程序的图像.但是,如果没有应用程序,它会覆盖空应用程序的图像.

所以我不能用它来检查它docInteractionController.icons.count == 0.我正在寻找其他技巧.

提前致谢.

iphone objective-c ipad ios uidocumentinteraction

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

UIDocumentInteractionController不显示打印选项

我有代码显示如下文档:

documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:self.thisUrl];

NSString *pathExtension = [self.thisUrl pathExtension];
if (pathExtension) {
    NSString *UTI = (__bridge NSString*)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)(pathExtension), NULL);
    if (UTI) {
        documentInteractionController.UTI = UTI;
    }
}
documentInteractionController.delegate = self;
[documentInteractionController presentOptionsMenuFromBarButtonItem:shareButton animated:YES];
Run Code Online (Sandbox Code Playgroud)

显示选项菜单时,它会显示可以打开文档的应用程序列表(例如消息),以及下面的操作列表.

选项菜单显示的列表操作与例如Mail应用程序中显示的菜单不同.

主要区别在于Mail应用程序显示"打印"选项,而我的选项菜单则没有.如何获取选项菜单以显示打印选项?

我的应用程序中显示的选项菜单

Mail中显示的选项菜单

编辑:我做了进一步测试,我实现了方法:

- (BOOL)documentInteractionController:(UIDocumentInteractionController *)controller canPerformAction:(SEL)action
{
  return YES;
}

- (BOOL)documentInteractionController:(UIDocumentInteractionController *)controller performAction:(SEL)action
{
  return YES; // or NO, doesn't matter
}
Run Code Online (Sandbox Code Playgroud)

这具有在弹出视图中显示"打印","复制"和"保存到相机胶卷"操作的效果.当我点击它们时没有发生任何事情,可能是因为我没有正确实施-performAction.我还在控制台日志中收到有关使用旧方法的警告.

这在某些方面是向后退一步,因为在添加这些方法之前,我无法再打印一些能够使用文档交互控制器正确打印的文档.

ios uidocumentinteraction

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

注册应用程序支持的文件类型以从其他应用程序打开文件

我希望我的应用程序能够从整个 iOS 的其他应用程序复制文件(图像、视频等),在浏览了苹果文档和一些在线资源后,我仍然无法让它工作。我附上了一张我的信息 plist 的图片。

在此处输入图片说明

这是该部分的 plist 代码:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>All Files</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.data</string>
            <string>public.content</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

xcode ios uidocumentinteraction

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

如何使用 UIDocumentInteractionController?

我创建了一个加载 PDF 文件的程序。我希望当用户编辑时,他们可以以 PDF 格式在任何地方发布文件。

我使用UIDocumentInteractionController还是使用UIActivityViewController

这是代码:

import UIKit
import PDFKit

@available(iOS 11.0, *)
@available(iOS 11.0, *)

class PDFViewControllerEN: UIViewController {
    var document: UIDocumentInteractionController!

    override func viewDidLoad() {
        super.viewDidLoad()
        // retrieve URL to file in main bundle`
    }

    @IBOutlet var pdfview: UIView!

    @IBAction func share(_ sender: UIButton) {
    }

    @IBAction func doAction2(_ sender: UIBarButtonItem) {
        document.presentOptionsMenu(from: view.bounds, in: view, animated: true)
    }

    override func viewWillAppear(_ animated: Bool) {
        //Here you are going to display your PdfController …
Run Code Online (Sandbox Code Playgroud)

ios uidocumentinteraction swift

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

UIDocumentInteractionController不显示邮件选项

继承我的应用程序中的UIDocuemtnInteractionController(不显示邮件选项) 在此输入图像描述

这是Apples示例项目使用的那个 在此输入图像描述

以下是各自的代码

我的应用程序

docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
[docInteractionController presentOpenInMenuFromBarButtonItem:(UIBarButtonItem*)sender animated:YES];
Run Code Online (Sandbox Code Playgroud)

Apple示例项目

NSURL *fileURL;
if (cellIndexPath.section == 0)
{
    // for section 0, we preview the docs built into our app
    fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:documents[cellIndexPath.row] ofType:nil]];
}
else
{
    // for secton 1, we preview the docs found in the Documents folder
    fileURL = [self.documentURLs objectAtIndex:cellIndexPath.row];
}
self.docInteractionController.URL = fileURL;

[self.docInteractionController presentOptionsMenuFromRect:longPressGesture.view.frame
                                                   inView:longPressGesture.view
                                                 animated:YES];
Run Code Online (Sandbox Code Playgroud)

我应该怎样做才能获得邮件选项?

ios uidocumentinteraction ios7

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

无法解除从iOS 8中的UIDocumentInteractionController调用的电子表格

我有一个非常简单的测试应用程序,其中只包含以下代码,附加到UIButton:

- (IBAction)buttonUp:(id)sender {

  // Build file path
  NSString* filePath = [[NSBundle mainBundle] pathForResource:@"testfile"
                                                       ofType:@"txt"];

  NSURL *url = [NSURL fileURLWithPath:filePath];

  m_interactionController = [UIDocumentInteractionController interactionControllerWithURL:url];

  [m_interactionController presentOptionsMenuFromRect:CGRectMake(200, 200, 100, 100)
                                               inView:[self view]
                                             animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

这构建没有问题,并在iOS 7(在第4代iPad:A1458)下运行,这个代码工作正常.

问题是,在iOS 8 Beta 5中,如果用户从中选择"邮件" UIDocumentInteractionController,则显示的电子邮件表永远不会被删除.点击发送确实发送邮件,但电子表格继续显示.点击取消并选择删除或保存草稿无效.

使用Xcode 5.1.1构建测试应用程序时会出现此问题.但是,如果应用程序是使用Xcode 6 GM构建的,则不会出现问题,并且代码工作正常.

上面的代码有什么问题吗?

cocoa-touch ios uidocumentinteraction ios7 ios8

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

Objective-C:通过UIDocumentInteractionController分享文本和图像到Instagram/Facebook/Twitter

我只是想知道是否有办法与UIDocumentInteractionController共享图片和文本.

我开发了一个具有共享功能的应用程序,到目前为止,我可以分享图片到Facebook,Twitter和Instagram,但没有图片的文字.

我现在用的是UIDocumentInteractionController,否则我不能设法通过Instagram的分享图片(例如,它是不可能的ActivityViewController这样做).

share facebook objective-c uidocumentinteraction instagram

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