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