简体   繁体   中英

Unable to share image using Ionic2/3 Social Share

here i am firstly sharing a image using ionic social share for this what i did is i grabbed the image by using Canvas and and i am exporting the same image code to the share plugin. when i do that i am getting the below in my body i mean i am sending via email

'data:image/png;base64,R0lGODlhDAAMALMBAP8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUKAAEALAAAAAAMAAwAQAQZMMhJK7iY4p3nlZ8XgmNlnibXdVqolmhcRQA7'

below is my code : Home.html

<canvas #myCanvas>

  <ion-card>
    <img [src]="image">

    <ion-card-content>
      <ion-card-title>
        Nine Inch Nails Live
      </ion-card-title>
      <p>
        The most popular industrial group ever, and largely
        responsible for bringing the music to a mass audience.
      </p>
    </ion-card-content>
  </ion-card>
  </canvas>

  <button ion-button (click)="getDat()"></button>

.ts code

@ViewChild('myCanvas') myCanvas:ElementRef ;


  image:any = 'https://images.pexels.com/photos/6966/abstract-music-rock-bw.jpg?auto=compress&cs=tinysrgb&h=350';

  constructor(public navCtrl: NavController,public share:SocialSharing) {

  }

  getDat(){
    var canvas = this.myCanvas.nativeElement;
    var imageBase64Data = canvas.toDataURL("image/png");

    console.log(imageBase64Data)

    this.share.canShareViaEmail().then(() => {
      this.share.shareViaEmail(imageBase64Data,'IDCARD', ['trend@gmail.co']).then(() => {
        ;
      }).catch(() => {
       // Error!

      });

    }).catch(() => {
      // Sharing via email is not possible
    });



  }

so it possible to send image in the body

You can use email composer to add attachments. See the code below.

import { EmailComposer } from '@ionic-native/email-composer';

constructor(private emailComposer: EmailComposer) { }

...


this.emailComposer.isAvailable().then((available: boolean) =>{
 if(available) {
  //Now we know we can send
 }
});

let email = {
  to: 'max@mustermann.de',
  cc: 'erika@mustermann.de',
  bcc: ['john@doe.com', 'jane@doe.com'],
  attachments: [
    'file://img/logo.png',
    'res://icon.png',
    'base64:icon.png//iVBORw0KGgoAAAANSUhEUg...',
    'file://README.pdf'
 ],
  subject: 'Cordova Icons',
  body: 'How are you? Nice greetings from Leipzig',
  isHtml: true
 };

// Send a text message using default options
this.emailComposer.open(email);

}

For more info check https://ionicframework.com/docs/native/email-composer/

Update

You can use this for social share

socialsharing.shareViaEmail(
  'Message', // can contain HTML tags, but support on Android is rather limited:  http://stackoverflow.com/questions/15136480/how-to-send-html-content-with-image-through-android-default-email-client
  'Subject',
  ['to@person1.com', 'to@person2.com'], // TO: must be null or an array
  ['cc@person1.com'], // CC: must be null or an array
  null, // BCC: must be null or an array
  ['https://www.google.nl/images/srpr/logo4w.png','www/localimage.png'], // FILES: can be null, a string, or an array
  onSuccess, // called when sharing worked, but also when the user cancelled sharing via email. On iOS, the callbacks' boolean result parameter is true when sharing worked, false if cancelled. On Android, this parameter is always true so it can't be used). See section "Notes about the successCallback" below.
  onError // called when sh*t hits the fan
);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM