2016-04-07 2 views
3

Мне нужно поделиться видео из моего приложения с WhatsApp. В настоящее время я могу это сделать, используя UIActivityViewController, но пользовательский интерфейс не очень хорош.обмениваться видео с каким-либо приложением, не показывая ActionSheet

(Пользователь нажимает кнопку «отправить в WhatsApp», а затем должен выбрать WhatsApp в Листе действий, отображаемом UIActivityViewController).

Я знаю, что можно открыть приложение WhatsApp и обмениваться видео. Например, приложение TuneMoji делает это очень хорошо:

  • Пользователь нажимает «отправить WhatsApp»
  • открывает приложение WhatsApp, прося пользователя назначения.

Я хотел бы сделать то же самое.

Пожалуйста, не говорите мне, чтобы посмотреть https://www.whatsapp.com/faq/en/iphone/23559013 или использовать UIDocumentInteractionController: Я хочу, чтобы пользователь не представил ActionSheet.

+3

Будучи грубым и пустым голосованием, все ответы не помогут получить дополнительную помощь. – redent84

+0

Я ограничил их только потому, что они не соответствуют требованиям проблемы (некоторые из них не обмениваются видео, некоторые показывают лист действий). Если кто-то еще подходит к этой теме, ища ответа на вопрос, он будет разочарован при попытке ответить на все невыбранные ответы. Это не должно быть грубо :) – Drico

+1

Скорее всего, вы должны спросить об этом в поддержке WhatsApp, предоставляют ли они какую-либо поддержку для таких медиа, как this 'whatsapp: // send? Text = Hello World!', Поскольку все текущее решение почти приводит к UIDocumentInteractionController ' – HardikDG

ответ

1

Попробуйте это на действия кнопки:

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) 
    } 
} 

Для получения дополнительной информации вы можете проверить реф: https://www.whatsapp.com/faq/en/iphone/23559013

Не забудьте включить в WhatsApp схему URL в Info.plist вашего приложения под ключ LSApplicationQueriesSchemes если вы хотите запросить наличие WhatsApp на iPhone пользователя с помощью «canOpenURL»

+0

Этот код по-прежнему показывает лист действий, чего я хочу избежать. – Drico

1

Вы можете открыть whatsapp следующим образом.

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

Я хочу поделиться видео, не представляя ActionSheet. Ваше решение не имеет никакого отношения к этой утилите. – Drico

+0

Вы пробовали этот код. Этот код не показывает лист действий ... вам просто нужно добавить этот код в метод действия кнопки ... (например, sendToWhatsAppButtonTapped), и вам нужно передать видео в whatsapp. –

+0

Ваш код откроет WhatsApp, но без копирования видео. – Drico

-1

Здесь у вас есть все, что вам нужно:

https://www.whatsapp.com/faq/en/iphone/23559013

Edit: и вы можете увидеть пример в этом SO отправить текст/изображения непосредственно, Что приложение -

Share image/text through WhatsApp in an iOS app

(см. Ответ Вагнера Продажи)

+0

Это решение представляет собой ActionSheet, чего я хочу избежать. – Drico

1

Вы можете отправлять текстовые сообщения с помощью WhatsApp URL Scheme следующим образом:

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

Это позволит открыть приложение и попросить получателя для отправки Hello World!.

Чтобы отправить изображения или видео, вы можете использовать UIActivityViewController, как вы уже заметили, или использовать UIDocumentInteractionController, которые могут быть ближе к тому, что вы ищете:

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

Чтобы показать только WhatsApp в списке приложений используйте расширение частного WhatsApp файла или ИМП:

в качестве альтернативы, если вы хотите, чтобы показать только WhatsApp в списке приложений (вместо WhatsApp плюс любые другие общественные/* - соответствующих приложений) вы гр указать файл одного из указанных выше типов, сохраненных с расширением, которое является эксклюзивным для WhatsApp:

  • изображения - «.wai», который имеет тип net.whatsapp.image
  • видео - «.wam», который имеет тип net.whatsapp.movie
  • аудиофайлы - «.waa», который имеет типа net.whatsapp.audio

При запуске WhatsApp немедленно отправит пользователю с помощью экрана выбора контактов/групп. Средства массовой информации будут отправляться в выбранный контакт/группу.

Дополнительная информация в this WhatsApp FAQ.

+1

Это решение представляет собой ActionSheet, чего я хочу избежать. – Drico

Смежные вопросы