web-dev-qa-db-ja.com

WhatsappとFacebookに画像を共有する

私はすでにWhatsappに写真を共有することができますが、これを行う方法は、UIActivityViewControllerでWhatsappオプションを提供し、次にUIDocumentInteractionControllerを表示することです。

このUIDocumentInteractionControllerから、ユーザーをWhatsappにリダイレクトし、写真を共有できるようにするWhatsappオプションを選択します。

これまでのところ、私のコードは次のようになっています。

if ([activityType isEqualToString:@"whatsappSharing"]) {
    if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"whatsapp://app"]]) {
        NSString *savePath  = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/whatsAppTmp.wai"];

        [UIImageJPEGRepresentation(finalImage, 1.0) writeToFile:savePath atomically:YES];

        weakDocumentInteraction = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:savePath]];
        weakDocumentInteraction.UTI = @"net.whatsapp.image";
        weakDocumentInteraction.delegate = weakSelf;

        [weakDocumentInteraction presentOpenInMenuFromRect:CGRectZero inView:weakSelf.view animated:YES];
    }
}

UIActivityViewControllerからオプションを選択して、Whatsappを直接表示できるようにしたい。

UIDocumentInteractionControllerを提示し、プログラムでWhatsappアプリオプションを選択するこの2番目の部分にジャンプする方法はありますか?

現在、ユーザーは画像を共有するためにWhatsappオプションを2回選択する必要があります。

PS:他のアクティビティも使用しているため、UIActivityViewControllerを使用しています。

12
Lucas Domene

したがって、基本的には、FacebookまたはWhatsappを介して画像を共有し、さらに画像を保存するオプションを提供する必要があります。

さて... 2つの最も速い方法のためにこれをゆっくりと分解しましょう。


Facebook + Whatsapp

UIActivityViewController経由

UIActivityViewControllerを介して画像を共有する場合、Whatsappオプションを提供するには、カスタムUIActivityを作成する必要があります Stackoverflowの質問を参照

これに関する問題は次のとおりです。

  1. Whatsappは、画像オブジェクトを渡すためのURLスキームを提供していません(まだ)。
    これについて一般的に興味がある場合は、 JBWhatsAppActivity を参照してください。

UIDocumentInteractionController経由

UIDocumentInteractionControllerを介して画像を共有する場合、Facebookオプションを提供するには、UTIをpublic.imageとして指定する必要があります。

これに関する問題は次のとおりです。

  1. public.image UTIは、FacebookやWhatsappだけでなく、UIDocumentInteractionControllerに多くのオプションを入力します。
  2. ではなく、Saveオプションの場合
    • このファイルタイプを開くアプリのみを表示する-presentOpenInMenuFromRect:inView:animated:メソッドを使用しています...
    • オプション-presentOptionsMenuFromRect:inView:animated:を表示するには、Save to Albumメソッドを使用する必要があります。 しかしこれにはMailなどの他のオプションが含まれます。

概要:

UIDocumentInteractionControllerのみを使用する場合は、上記の理由によりjustFacebook + Whatsapp + Save()を表示できないという事実を受け入れる必要があります

UIActivityViewControllerを使用していて、WhatsappのカスタムUIActivityを作成したくない場合は、but...を使用することにした場合はスタックします。カスタムUIActivityの場合、UIActivityViewControllerを使用してWhatsappと画像オブジェクトを共有するためのプロビジョニングがないため、まだスタックしています。

結論:

justFacebook + Whatsapp + Saveオプションを使用する簡単な方法はないようです。

それを複雑にしているのは、Whatsappで画像を共有する唯一の方法のように見えるUIDocumentInteractionControllerを使用するように強制するWhatsappです(currentlyそしてURLスキームが制限されているため、UIActivityViewControllerで指定しても意味がありません。

さらに、UIDocumentInteractionControllerを順番に使用すると、必要以上のオプションを提供できます。

正直なところ、これは今かなり暗いように見えます。

20
staticVoidMan

質問を適切に理解している場合は、1 UIDocumentInteractionControllerを介して簡単に共有するオプションがあります。古い質問と回答を確認してください: https://stackoverflow.com/a/20887254/849616

1
Vive