2016-04-07 3 views
3

Ich brauche Videos von meiner App WhatsApp zu teilen. ich zur Zeit kann dies tun, indem sie ein UIActivityViewController verwenden, aber die User Experience ist nicht gut.Aktien Videos zu was app ohne ActionSheet zeigt

(Der Benutzer drückt eine Schaltfläche "an WhatsApp senden" und muss WhatsApp im Aktionsblatt auswählen, das von UIActivityViewController angezeigt wird).

Ich weiß, es ist möglich, die WhatsApp-Anwendung zu öffnen und Videos zu teilen. Zum Beispiel kann die Anwendung TuneMoji tut es sehr gut:

  • Der Benutzer drückt die
  • Die WhatsApp-Anwendung öffnet, fragt nach einem Ziel-Benutzer „zu WhatsApp senden“.

Ich möchte genau das gleiche tun.

Bitte sagen Sie mir nicht zu https://www.whatsapp.com/faq/en/iphone/23559013, oder eine UIDocumentInteractionController zu verwenden: Ich möchte vermeiden, ein ActionSheet für den Benutzer zu präsentieren.

+3

Unhöflich und down-voting alle Antworten werden nicht helfen, mehr Hilfe zu bekommen. – redent84

+0

Ich habe sie nur abgelehnt, weil sie nicht den Anforderungen des Problems entsprechen (einige teilen kein Video, einige zeigen ein Aktionsblatt). Wenn jemand anderes zu diesem Thread auf der Suche nach einer Antwort auf die Frage kommt, wird er enttäuscht sein, wenn er alle nicht-schwebenden Antworten ausprobiert. Das soll nicht unhöflich sein :) – Drico

+1

wahrscheinlich sollten Sie dies in WhatsApp Unterstützung fragen, bieten sie keine Unterstützung für Medien wie diese WhatsApp: // senden? Text = Hallo Welt! 'Als die aktuelle Lösung führt fast zu UIDocumentInteractionController ' – HardikDG

Antwort

1

Versuchen Sie dies auf die Schaltfläche Aktion:

func sendVideo(videoName: String, senderView: UIView) { 

     if UIApplication.sharedApplication().canOpenURL(NSURL(string: "whatsapp://app")!) { 
     let savePath: String = NSBundle.mainBundle().pathForResource(videoName, ofType: "mov")! 
     let documentInteractionController = UIDocumentInteractionController(URL: NSURL.fileURLWithPath(savePath)) 
     documentInteractionController.UTI = "net.whatsapp.movie" 
     documentInteractionController.delegate = self 
     documentInteractionController.presentOpenInMenuFromRect(CGRectMake(0, 0, 0, 0), inView: senderView, animated: true) 
    } 
    else { 

     let alertController = UIAlertController(title: "Error occured", message: "WhatsApp is not installed on your device.", preferredStyle: .Alert) 
     let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil) 
     alertController.addAction(defaultAction) 
     presentViewController(alertController, animated: true, completion: nil) 
    } 
} 

Für weitere Informationen können Sie ref überprüfen: https://www.whatsapp.com/faq/en/iphone/23559013

Seien Sie sicher, dass WhatsApp-URL-Schema in Ihrer Anwendung Info.plist unter LSApplicationQueriesSchemes Schlüssel enthalten Wenn Sie Präsenz von WhatsApp auf Benutzer-iPhone mit 'canOpenURL' abfragen möchten

+0

Dieser Code zeigt immer noch ein Aktionsblatt, was ich vermeiden möchte. – Drico

1

Sie können WhatsApp wie folgt öffnen.

NSURL *urlOfWhatsApp = [NSURL URLWithString:@"whatsapp://"]; 

if ([[UIApplication sharedApplication] canOpenURL:urlOfWhatsApp]) { //check app can open whatsapp or not. 

    [[UIApplication sharedApplication] openURL:urlOfWhatsApp]; 

} else { 
    NSLog(@"You device do not have whatsapp."); 
} 
+0

Ich möchte ein Video teilen, ohne ein ActionSheet zu präsentieren. Ihre Lösung hat mit diesem Anwendungsfall nichts zu tun. – Drico

+0

Haben Sie diesen Code ausprobiert? Dieser Code zeigt kein Aktionsblatt ... Sie müssen diesen Code nur in der Aktionsmethode der Schaltfläche hinzufügen ... (wie sendToWhatsAppButtonTapped) und Sie müssen das Video an WhatsApp übergeben. –

+0

Ihr Code wird WhatsApp öffnen, aber ohne ein Video zu kopieren. – Drico

1

Sie können Textnachrichten mit WhatsApp URL-Schema wie folgt senden:

NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%2C%20World!"]; 
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) { 
    [[UIApplication sharedApplication] openURL: whatsappURL]; 
} 

Dies wird die Anwendung öffnen und für das Ziel bitten Hello World! zu senden.

Bilder oder Videos versenden Sie UIDocumentInteractionController die UIActivityViewController wie Sie bereits bemerkt haben, oder verwenden können, das näher sein kann, was Sie suchen:

_documentController = [UIDocumentInteractionController interactionControllerWithURL:_imageFileURL]; 
_documentController.delegate = self; 
_documentController.UTI = @"net.whatsapp.image"; 
[_documentController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]; 

nur whatsapp in der Anwendungsliste Um zu zeigen, verwenden, die private whatsapp Dateierweiterung oder UTI:

Alternativ, wenn Sie nur WhatsApp in der Anwendung Liste (statt WhatsApp und anderen öffentlichen/* - konforme Anwendungen) zeigen möchten Sie c ein geben Sie eine Datei von einem der oben genannten Typen mit der Erweiterung gespeichert, der WhatsApp ist exklusiv:

  • Bilder - «.wai», die vom Typ net.whatsapp.image
  • Videos - «.wam» die net.whatsapp.movie vom Typ
  • Audiodateien ist - «.waa», die von Typ ist net.whatsapp.audio

Wenn diese Funktion ausgelöst wird, zeigt WhatsApp sofort dem Benutzer den Kontakt-/Gruppenauswahlbildschirm an. Die Medien werden automatisch an einen ausgewählten Kontakt/eine ausgewählte Gruppe gesendet.

Weitere Informationen in this WhatsApp FAQ.

+1

Diese Lösung präsentiert ein ActionSheet, was ich vermeiden möchte. – Drico

Verwandte Themen