(最近まで) 機能していた 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で開発しています
ありがとう