0

Apple のドキュメントは、SLComposeViewController を使用して、Twitter や Facebook などの他のソーシャル ネットワークとの共有機能を提供することについて明確に説明しています。

典型的なコードは、特定のサービスが利用可能かどうかを確認するために使用し、ユーザーが「投稿」ボタンまたは「キャンセル」ボタンをタップしたかどうかを確認するまたはをチェックできるisAvailableForServiceTypeビュー コントローラーに完了ハンドラーを追加します。共有ビューが表示された後。SLComposeViewControllerResultSLComposeViewControllerResultCancelledSLComposeViewControllerResultDone

ここでの問題はSLComposeViewControllerResultDone、ユーザーがリクエストを行ったことを検証するために使用する場合、ユーザーの接続が制限されている場合や接続がない場合など、リクエストが成功したかどうかを実際に確認しないことです。

これをテストするために自分のアプリの 1 つを試してみたSLComposeViewControllerResultDoneところ、リクエストができないように機内モードがオンになっていても、定数がまだ有効であることがわかりました。これが意味することは、ユーザーが共有ビュー フィールドに入力し、[投稿] をタップすると、投稿が実際に成功したことを確認する必要があるにもかかわらず、成功コードが実行されることです。

現在、標準の到達可能性オプション (ここで推奨) を使用してインターネット接続を確認し、接続が利用できない場合は共有ボタンを無効にすることが最善の方法であると考えていますが、これが最善の解決策であるかどうかはわかりません。ユーザーが「投稿」をタップできる制限された接続を考慮していませんが、実際のリクエストは失敗しています。

私の質問は、共有リクエストが正常に完了したかどうかを検出する最良の方法は何ですか?

4

1 に答える 1

0

次に、行の下に書かないようにする必要がありますdidSelectPost

[self.extensionContext completeRequestReturningItems:nil completionHandler:nil];

そして、リクエストハンドラーでそれに基づいて成功または失敗したら、上記の行を書くことができるので、次のようになりますdidSelectPost:

- (void)didSelectPost {
    NSExtensionItem *inputItem = self.extensionContext.inputItems.firstObject;
    NSItemProvider *attachment = inputItem.attachments.firstObject;
    if ([attachment hasItemConformingToTypeIdentifier:@"public.url"])
    {
        //NSString *strLink = [attachement loadItemForTypeIdentifier:@"public.url" options:nil completionHandler:nil];
        [attachment loadItemForTypeIdentifier: @"public.url"
                                       options: nil
           // make your request here
        }];
    }
}
于 2015-06-24T12:06:55.940 に答える