You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ionic原生APP(安卓&iOS)中发送带附件的MMS?

解决Ionic原生APP发送带图片MMS的问题

Hey there! I’ve dealt with this exact MMS attachment issue in Ionic apps before—here are a few reliable solutions to get you sending picture-containing MMS messages:

1. 使用支持MMS的Cordova插件

标准的Cordova SMS插件可能只支持文本,但有专门为带附件的MMS打造的插件。cordova-plugin-sms-mms是个不错的选择(维护状态良好,兼容大部分设备):

  • 安装插件:
    打开终端进入你的Ionic项目根目录,运行以下命令:

    ionic cordova plugin add cordova-plugin-sms-mms
    npm install @ionic-native/sms-mms
    
  • 发送带图片MMS的代码示例:
    在组件中导入插件,替换示例中的图片路径为你的实际文件位置:

    import { SMS } from '@ionic-native/sms/ngx';
    
    constructor(private sms: SMS) { }
    
    sendImageMMS() {
      const mmsOptions = {
        attachments: ['file:///storage/emulated/0/Pictures/your-image-file.jpg'],
        type: 'mms'
      };
    
      this.sms.send('+1234567890', '', mmsOptions)
        .then(() => console.log('MMS发送成功!'))
        .catch(err => console.error('发送MMS失败:', err));
    }
    

    重要提示:确保你的APP拥有访问设备存储的权限(需要在平台配置文件中设置),并且图片路径是设备上有效的绝对路径。

2. 调用原生短信应用(备选方案)

如果插件兼容性出问题,调用设备自带的短信应用是个稳定的替代方案。让系统处理MMS发送,可以避免插件特定的bug:

  • 代码示例:
    import { Platform } from '@ionic/angular';
    import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
    
    constructor(private platform: Platform, private iab: InAppBrowser) { }
    
    openNativeSMSWithAttachment() {
      const recipientNumber = '+1234567890';
      const imagePath = 'file:///storage/emulated/0/Pictures/your-image.jpg';
    
      if (this.platform.is('android')) {
        // Android支持通过URL直接添加附件
        const smsUrl = `sms:${recipientNumber}?attachment=${encodeURIComponent(imagePath)}`;
        this.iab.create(smsUrl, '_system');
      } else if (this.platform.is('ios')) {
        // iOS不支持通过URL添加附件,只能打开短信应用
        const smsUrl = `sms:${recipientNumber}`;
        this.iab.create(smsUrl, '_system');
        // 注意:iOS用户需要手动从相册添加图片
      }
    }
    

3. 关键权限配置

不管用哪种方法,都需要为Android和iOS配置正确的权限:

Android

在platforms/android/app/src/main/AndroidManifest.xml中添加以下权限:

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

对于Android 6.0+,还需要在APP中动态请求权限:

import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';

constructor(private androidPermissions: AndroidPermissions) { }

requestRequiredPermissions() {
  this.androidPermissions.requestPermissions([
    this.androidPermissions.PERMISSION.SEND_SMS,
    this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE
  ]);
}

iOS

在platforms/ios/YourAppName/Info.plist中添加以下条目(替换描述文本为你自己的内容):

<key>NSPhotoLibraryUsageDescription</key>
<string>我们需要访问你的相册以在MMS中添加图片附件</string>
<key>NSMessagesUsageDescription</key>
<string>我们需要访问短信应用以发送MMS</string>

内容的提问来源于stack exchange,提问作者Suraj Wasnik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:36:58