Haz que la aplicación Ionic aparezca en la lista "Compartir" y reciba datos

Estoy tratando de obtener una aplicación de Ionic para aparecer en la lista "Compartir" cuando un usuario hace clic en el botón de compartir, por ejemplo, para una imagen.

Ejemplo compartido

Por lo que entiendo tengo que añadir algo como

<intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> 

En el AndroidManifest.xml . Que puedo hacer con el plugin cordova-custom-config , creo.
Entonces tendría que manejar esa intención de alguna manera sin embargo y eso es donde consigue complicado para mí. Parece que el único cordova plugin que actualmente es maintaned para intentos es éste . He intentado usarlo así:

  initializeApp() { this.platform.ready().then(() => { // Okay, so the platform is ready and our plugins are available. // Here you can do any higher level native things you might need. this.statusBar.styleDefault(); this.splashScreen.hide(); this.registerBroadcastReceiver(); }); } private registerBroadcastReceiver(){ window.plugins.intentShim.registerBroadcastReceiver({ filterActions: [ 'com.darryncampbell.cordova.plugin.broadcastIntent.ACTION' ] }, function(intent) { // Broadcast received console.log('Received Intent: ' + JSON.stringify(intent.extras)); } ); } 

Pero de esta manera estoy recibiendo un error que window.plugins no está definido. Realmente no sé cómo integraría esto con Ionic .

También esto sólo funciona para Android, me gustaría tener ese trabajo para iOS también. Esta pregunta SO está relacionada y menciona una manera de hacerlo para iOS, pero es de 4 años (las partes vinculadas iOS 5 años) y el proyecto webintent especificado para Android en la respuesta ni siquiera existe más.

Sería genial si alguien pudiera ayudarme aquí.

También relacionado:

  • Cordova recibe datos compartidos de otra aplicación – Usos desactualizados plugin, window.plugins , específicos de Android.
  • Enviar url a la aplicación androide iónica a través de webintents de otra aplicación – Usa complemento obsoleto, window.plugins , específicos de Android.

Actualizar

Todas las respuestas se centran en Android sólo, realmente esperaba que alguien me podría señalar en la dirección correcta para iOS como lo necesitaría allí aún más …

Conclusión final y recompensa

Generosidad
Después de una larga consideración he concluido para dar la generosidad a @ Ghandi. Aunque nadie pudo dar una respuesta completa, él era el único que intentaba contestar a toda la pregunta – incluyendo la parte del iOS. Yo no esperaba una solución de código completo, sólo un puntero en la dirección correcta para Android e iOS y eso es lo que él vino más cerca de todas las respuestas. Sé que esta es una pregunta muy amplia y me gustaría dar las gracias a todos los que se tomaron el tiempo para responder y / o comentar esta pregunta.

Para otros que están tratando de lograr lo mismo, aquí es lo que concluyo de toda mi investigación y las respuestas aquí

Androide
Como ya he descrito en mi pregunta anterior, tienes que añadir esas líneas a AndroidManifest.xml . Android hará que tu aplicación aparezca en la lista de recursos compartidos. Los datos que recibe tu aplicación tendrás que manejar a través de un llamado Intent . Para ello, puede utilizar Ionic Native – Web Intent . A partir de 9.5.2017 esto no funcionaría todavía como el Plugin Ionic Native está usando ya no existe. Sin embargo, he creado un problema en Github donde me han dicho que la próxima versión de Ionic Native (creo que 3.7.0), que debe ser lanzado en las próximas dos semanas, debe arreglar esto mediante el complemento mencionado en mi pregunta anterior ya. Esto resuelve el problema de tener que jugar un poco en el marco Ionic usted mismo y simplemente ser capaz de utilizar Ionic Native.

IOS
En iOS parece ser un poco más complicado y también hay menos que encontrar en la web. Lo mejor es seguir el enlace que @Ghandi ofrece en su respuesta a continuación.

Después de un análisis detallado, esto es lo que podría concluir:

En Android, sólo puede obtener su aplicación agregada en la lista de recursos utilizando cordova-plugin-intention como se describe aquí . También puede lograr esto agregando filtros de intenciones en la actividad como se describe aquí

En iOS, esto es un poco complicado ya que no hay complementos directos ni soluciones readymade disponibles para lograr esto. Pero el mejor enlace posible que podría obtener relacionados con la adición de la aplicación en el menú de iOS compartir se está enumerando en el menú compartido El vínculo incluye la documentación de Apple para hacer esto y también algunos ajustes en Info.plist para lograr esto.

Esta es la mejor respuesta posible que pude pensar. Espero eso ayude. Aclamaciones.

Para ejecutar el complemento https://github.com/darryncampbell/darryncampbell-cordova-plugin-intent , prueba:

  • Instale el complemento con --save para asegurarse de que el complemento se agrega a su config.xml

     ionic plugin add https://github.com/darryncampbell/darryncampbell-cordova-plugin-intent --save 
  • Dado que este complemento no se importa en ionic-native , es necesario identificar el objeto global. Esto se declarará en la carpeta plugin-> plugin.xml . Aquí el objeto es intentShim .

      <js-module name="IntentShim" src="www/IntentShim.js"> <clobbers target="intentShim" /> </js-module> 
  • En su código declare el objeto global como:

     declare var intentShim:any; 

    Y en su función,

     private registerBroadcastReceiver(){ intentShim.registerBroadcastReceiver({ filterActions: [ 'com.darryncampbell.cordova.plugin.broadcastIntent.ACTION' ] }, function(intent) { // Broadcast received console.log('Received Intent: ' + JSON.stringify(intent.extras)); } ); } 

tratar

 window.intentShim.registerBroadcastReceiver 

O función de llamada dentro

 document.addEventListener('deviceready', function(){ registerBroadcastReceiver() }, false); 
  • ¿Qué tan seguros son los certificados SSL de clientes en una aplicación para móviles?
  • Restringir solicitudes de API solo a mi propia aplicación para móviles
  • Android ignora la escala máxima al usar meta-tag de viewport de ancho fijo
  • Android no puede reproducir vídeo H264 / AAC
  • Cómo hacer el código QR para AMBOS Android Market y App Store
  • Unity c #, tomar captura de pantalla y guardar en archivo como jpg
  • Tratando de encajar una "arquitectura limpia" en una aplicación iOS
  • Implementación de FCM (Firebase Cloud Messaging) en una aplicación MVC Web
  • Android Studio vs Visual Studio (desarrollo multiplataforma multiplataforma)
  • Cordova audio visualizador? (Con Media en lugar de AnalyserNode)
  • Ionic Cordova cámara problema con ios 10
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.