it-swarm.com.de

Weitergabe des Bildes an WhatsApp und Facebook

Ich kann bereits Fotos für Whatsapp freigeben, aber ich kann die Whatsapp-Option in einer UIActivityViewController angeben und dann eine UIDocumentInteractionController anzeigen.

Aus dieser UIDocumentInteractionController wähle ich die Whatsapp-Option, die den Benutzer zu Whatsapp umleitet und ihm die Freigabe des Fotos ermöglicht.

Bisher ist mein Code so:

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];
    }
}

Ich möchte in der Lage sein, die Option aus einer UIActivityViewController auszuwählen und direkt Whatsapp anzuzeigen. 

Gibt es eine Möglichkeit, diesen zweiten Teil der Präsentation der UIDocumentInteractionController und der programmgesteuerten Auswahl der Whatsapp-App zu überspringen?

Derzeit muss der Benutzer die Whatsapp-Option zweimal auswählen, um das Bild gemeinsam zu nutzen.

PS: Ich verwende UIActivityViewController, weil ich auch andere Aktivitäten verwende.

12
Lucas Domene

Grundsätzlich möchten Sie ein Bild über Facebook oder WhatsApp freigeben und zusätzlich eine Option zum Speichern des Bildes bereitstellen.

Nun ... Lass uns das langsam auf die 2 schnellsten Wege brechen.


Facebook + WhatsApp

Über UIActivityViewController

Wenn Sie ein Bild überUIActivityViewControllerteilen, müssen Sie eine benutzerdefinierte UIActivity erstellen, um die Whatsapp-Option bereitzustellen. ( Siehe Stackoverflow-Frage )

Die Probleme dabei sind:

  1. Whatsapp hat kein URL-Schema zum Übergeben eines Bildobjekts (noch) bereitgestellt.
    Schauen Sie unter JBWhatsAppActivity nach, ob Sie generell neugierig sind.

Über UIDocumentInteractionController

Wenn Sie ein Bild überUIDocumentInteractionControllerfreigeben, müssen Sie zur Bereitstellung der Facebook-Option die UTI als public.image angeben.

Die Probleme dabei sind:

  1. Das public.image-UTI füllt Ihre UIDocumentInteractionController mit mehr Optionen als nur Facebook und Whatsapp.
  2. Für Save Option statt
    • Verwenden der -presentOpenInMenuFromRect:inView:animated:-Methode, die nur Apps anzeigt, die diesen Dateityp öffnen ...
    • Sie müssen die Methode -presentOptionsMenuFromRect:inView:animated: verwenden, um die Option Save to Album anzuzeigen. Aber Dies schließt andere Optionen wie Mail usw. ein.

Zusammenfassung:

Wenn Sie nur UIDocumentInteractionController verwenden, sollten Sie der Tatsache zustimmen, dass Sie nur Facebook + Whatsapp + Save (aus den oben genannten Gründen) nicht anzeigen können.

Wenn Sie UIActivityViewController verwenden und keine benutzerdefinierte UIActivity für Whatsapp erstellen möchten, bleiben Sie aber ... Wenn Sie sich für eine benutzerdefinierte UIActivity entscheiden, bleiben Sie stecken, weil es keine Bereitstellung gibt So teilen Sie ein Bildobjekt mit WhatsApp mit UIActivityViewController.

Fazit:

Es scheint keine einfache Möglichkeit zu geben, nur Facebook + Whatsapp + Save-Option zu haben. 

Das, was es kompliziert macht, ist Whatsapp, der Sie zwingt, UIDocumentInteractionController zu verwenden. Dies scheint die einzige Möglichkeit zu sein, ein Bild auf Whatsapp (derzeit) und zu teilen. Aufgrund seines eingeschränkten URL-Schemas gibt es kein Stellen Sie es in UIActivityViewController bereit.

Darüber hinaus führt die Verwendung von UIDocumentInteractionController dazu, dass Sie mehr Optionen angeben, als Sie möchten.

Ehrlich gesagt, das sieht im Moment ziemlich düster aus.

20
staticVoidMan

Wenn ich die Frage richtig verstehe, gibt es eine Option, um sie problemlos über 1 UIDocumentInteractionController zu teilen. Bitte überprüfen Sie meine alte Frage und Antwort: https://stackoverflow.com/a/20887254/849616 .

1
Vive