0

我在 iPad 上的应用程序间通信存在问题,该问题(直到最近)一直在工作。我正在使用http://enharmonichq.com/sharing-data-locally-between-ios-apps/中的标准粘贴板代码,这是一个很好的教程并且效果很好。

我的问题是,现在我的“查看器”应用程序在打开时没有收到粘贴板。

编码:

+(void)handleSendPasteboardDataURL:(NSURL *)sendPasteboardDataURL
                 completionHandler:(ENHAppDataSharingHandler)completionHandler;
{
    NSString *query = [sendPasteboardDataURL query];
    NSString *pasteboardName = [sendPasteboardDataURL fragment];
    NSAssert2(([query isEqualToString:kReadPasteboardDataQuery] && pasteboardName),
              @"Malformed or incorrect url sent to %@. URL: %@",
              NSStringFromSelector(_cmd), sendPasteboardDataURL);

    AppDataPackage *dataPackage = nil;
    NSError *error = nil;

    NSString *pasteboardType = kAppDataPackageUTI;
    UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:pasteboardName create:NO];

    if (pasteboard)
    {
        NSData *data = [pasteboard dataForPasteboardType:pasteboardType];
        if (data)
        {
            dataPackage = [AppDataPackage unarchivePackageData:data];
        }
        else
        {
            NSDictionary *errorInfoDictionary = @{NSLocalizedDescriptionKey: [NSString stringWithFormat:
                                                                              @"%@ %@", NSLocalizedString(@"No data found on pasteboard with name:", nil),
                                                                              pasteboardName]};
            error = [NSError errorWithDomain:AppDataSharingErrorDomain
                                        code:ENHAppDataSharingErrorTypeNoDataFound
                                    userInfo:errorInfoDictionary];
        }
        [pasteboard setData:nil forPasteboardType:pasteboardType];
        [pasteboard setPersistent:NO];
    }
    else
    {
        NSDictionary *errorInfoDictionary = @{NSLocalizedDescriptionKey:
                                                  [NSString stringWithFormat:@"%@ %@",
                                                   NSLocalizedString(@"No pasteboard found for name:", nil), pasteboardName]};
        error = [NSError errorWithDomain:AppDataSharingErrorDomain
                                    code:ENHAppDataSharingErrorTypeNoPasteboardForName
                                userInfo:errorInfoDictionary];
    }
    completionHandler(dataPackage, error);
}

这以前在设备上运行良好,在模拟器上仍然运行良好。但是现在在设备上进行测试时,调用...

[UIPasteboard pasteboardWithName:pasteboardName create:NO];

...失败,粘贴板为零。(粘贴板名称有效)

正如我所说,这在模拟器上可以正常工作,但在设备上却不行。

所以我的问题是,是否有其他人遇到过同样的问题?关于它可能是什么的任何建议?

我的源应用程序正在工作,因为其他粘贴板“测试”应用程序可以接收数据并在设备上工作。只是我的主要接收应用程序无法获取有问题的粘贴板。

我对这个有点不知所措。

这是运行 iOS7.1.2 并在 xcode 5.1.1 上开发

谢谢

4

0 回答 0