我在 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 上开发
谢谢