shareAction

论坛示例

为帮助用户更好更快的使用原生插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

概述

沙盒机制

每个 APP 程序都有一个独立的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒。应用必须待在自己的沙盒里,其他应用不能访问该沙盒(除非其主动通过shareAction)原生插件分享资源到目标APP,接受其他APP分享来的文件,可通过 api 对象下的addEventListener监听appintent事件来获取)。当然该应用也不能访问其它应用的沙盒(某些系统资源除外,如系统相册等,编译之前需申请访问权限)。在Android系统上sdcard 中的公共目录只要 app 有读写权限就可以访问。

系统分享

通过系统分享,能将本 APP 沙盒中的文本、图片、文件等资源分享给可接受的 APP,如微信、QQ、支付宝、新浪微博等。同时,在 Yonbuilder 移动开发平台上可通过 api 对象下的addEventListener 接口监听 appintent 事件来获取其他 APP 分享来的资源信息。

在 iOS 端若想要自己的 APP 在系统分享列表中显示,需要配置 Info.plist 文件。有关 Info.plist 文件的说明参考论坛。 配置示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>LSItemContentTypes</key>
            <array>
                <string>public.item</string>
                <string>public.content</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

字段解释:

  • CFBundleDocumentTypes:指的是当前app可以接收文档的类型,比如图片啊、文档
  • LSItemContentTypes:指的是具体的可以接收的类型,比如txt、jpg、doc。这个key对应的是一个Array,Array中放的是支持类型的字段。具体Array放的字段,可以参考System-Declared Uniform Type Identifiers

注意:谨慎配置此功能,提交苹果商店时需要加上详细的说明,否则审核会被拒绝。

原生插件简述

shareAction 封装了调用系统分享功能的原生插件,通过该原生插件能够分享一些最常见的文本、图片、文件等信息到可接受的 APP,如微信、QQ、支付宝、新浪微博等。本原生插件兼容 iPad。

share

打开分享对话框

share({params})

params

text:

  • 类型:字符串
  • 描述:(可选项)要分享的文本信息,在iOS端,当type为image时,本参数会被忽略

type:

  • 类型:字符串
  • 描述:(可选项)分享文件的类型(iOS系统微信不支持纯文字的分享)
  • 默认值:text
  • 取值范围:
    • text //纯文本
    • image //图片
    • audio //音频文件
    • file //普通文件
    • url //网络链接

path:

  • 类型:字符串
  • 描述:(可选项)要分享的路径,若是‘file’或‘audio’类型,要求本地路径(fs://、widget://),若是url类型,需要有效的网址。若 images 不为空则原生插件忽略本参数。Android 平台不支持 widget:// 路径

images:

  • 类型:数组
  • 描述:(可选项)分享的图片路径组成的数组,仅当 type 为 image 时有效;要求本地路径(fs://、widget://)。若本参数不为空则原生插件忽略 path 参数。android 仅支持fs://路径

thumbnail:

  • 类型:字符串
  • 描述:(可选项)分享时的缩略图;要求本地路径(fs://、widget://)。若不传则不显示。仅支持 iOS 平台

arrowRect:

  • 类型:JSON 对象
  • 描述:(可选项)iPad中显示时,箭头指向的位置,只iPad有效
  • 内部字段:
{
    x:0,                  //左上角x坐标,数字类型
    y:0,                  //左上角y坐标,数字类型
    w:0,                  //宽度,数字类型
    h:0,                  //高度,数字类型
}

arrowDirection:

  • 类型:字符串
  • 描述:(可选项)iPad中显示时,箭头指向的方向,只iPad有效
  • 默认值:any
  • 取值范围
    • left // 指向左边
    • right // 指向右边
    • up // 指向上边
    • down // 指向下边
    • any // 系统根据页面情况选择合适的方向

contentSize:

  • 类型:JSON 对象
  • 描述:(可选项)iPad中显示时,对话框大小,只iPad有效,iOS不支持
  • 内部字段:
{
    w:0,                  //宽度,数字类型
    h:0                   //高度,数字类型
}

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)原生插件视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:原生插件依附于当前 window

示例代码

var sharedModule = api.require('shareAction');
sharedModule.share({
    text: '纯文本信息',
    type: 'text'
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

shareText

分享文本到系统分享控件(通过系统分享控件分享到目标APP)

params

text:

  • 类型:字符串
  • 描述:要分享的文本信息
  • 注意:
    • 在 iOS 端不支持纯文字分享到微信,建议通过剪切板实现
    • 在 Android 端不支持纯文字分享到微信朋友圈,可分享给微信好友

iPad:

  • 类型:JSON
  • 描述:(可选项)iPad 上分享控件的样式配置,若不传则在iPad上显示默认样式
  • 内部字段:
{
   arrowRect: {             //JSON 对象,iPad中显示时箭头指向的位置
      x:0,                  //左上角x坐标,数字类型
      y:0,                  //左上角y坐标,数字类型
      w:0,                  //宽度,数字类型
      h:0,                  //高度,数字类型
   }, 
   contentSize: {           //JSON 对象,对话框大小
      w:0,                  //宽度,数字类型
      h:0                   //高度,数字类型
   },
   fixedOn:'',              //字符串类型;对话框所依附的窗口;默认:于当前 window
   arrowDirection: '',      //字符串类型;箭头指向的方向;默认:any;取值范围:
                            //left:指向左边
                            //right:指向右边
                            //up:指向上边
                            //down:指向下边
                            //any:系统根据页面情况选择合适的方向
}

示例代码

var sharedModule = api.require('shareAction');
sharedModule.shareText({
    text: '纯文本信息'
});

可用性

iOS 系统,Android 系统

可提供的 1.0.8 及更高版本

shareImage

打开分享对话框,分享图片到目标 APP android多图片分享(即images参数)功能,会在android 7.0+ 并且在编译版本(targetVersion)为26时会出现一些兼容性问题,推荐使用share接口分享图片

shareImage({params})

params

images:

  • 类型:数组
  • 描述:要分享图片的路径组成的数组,要求本地路径(widget://、fs://)Android 平台不支持 widget://
  • 注意:分享单张图片时传一张即可

text:

  • 类型:字符串
  • 描述:(可选项)要分享的文本信息,仅支持 android 端

iPad:

  • 类型:JSON
  • 描述:(可选项)iPad 上分享控件的样式配置,若不传则在iPad上显示默认样式
  • 内部字段:
{
   arrowRect: {             //JSON 对象,iPad中显示时箭头指向的位置
      x:0,                  //左上角x坐标,数字类型
      y:0,                  //左上角y坐标,数字类型
      w:0,                  //宽度,数字类型
      h:0,                  //高度,数字类型
   }, 
   contentSize: {           //JSON 对象,对话框大小
      w:0,                  //宽度,数字类型
      h:0                   //高度,数字类型
   },
   fixedOn:'',              //字符串类型;对话框所依附的窗口;默认:于当前 window
   arrowDirection: '',      //字符串类型;箭头指向的方向;默认:any;取值范围:
                            //left:指向左边
                            //right:指向右边
                            //up:指向上边
                            //down:指向下边
                            //any:系统根据页面情况选择合适的方向
}

示例代码

var sharedModule = api.require('shareAction');
sharedModule.shareImage({
    text: '纯文本信息',
    images: []
});

可用性

iOS 系统,Android 系统

可提供的 1.0.8 及更高版本

shareFile

打开分享对话框,分享文件

shareFile({params})

params

path:

  • 类型:字符串
  • 描述:要分享的文件路径,要求本地路径(fs://、widget://),Android 平台不支持 widget:// 路径

text:

  • 类型:字符串
  • 描述:(可选项)要分享的文本信息仅支持 android 端

iPad:

  • 类型:JSON
  • 描述:(可选项)iPad 上分享控件的样式配置,若不传则在iPad上显示默认样式
  • 内部字段:
{
   arrowRect: {             //JSON 对象,iPad中显示时箭头指向的位置
      x:0,                  //左上角x坐标,数字类型
      y:0,                  //左上角y坐标,数字类型
      w:0,                  //宽度,数字类型
      h:0,                  //高度,数字类型
   }, 
   contentSize: {           //JSON 对象,对话框大小
      w:0,                  //宽度,数字类型
      h:0                   //高度,数字类型
   },
   fixedOn:'',              //字符串类型;对话框所依附的窗口;默认:于当前 window
   arrowDirection: '',      //字符串类型;箭头指向的方向;默认:any;取值范围:
                            //left:指向左边
                            //right:指向右边
                            //up:指向上边
                            //down:指向下边
                            //any:系统根据页面情况选择合适的方向
}

示例代码

var sharedModule = api.require('shareAction');
sharedModule.shareFile({
    text: '文本信息',
    path: ''
});

可用性

iOS 系统,Android 系统

可提供的 1.0.8 及更高版本

shareAudio

打开分享对话框,分享音频文件

shareAudio({params})

params

path:

  • 类型:字符串
  • 描述:要分享的音频路径,要求本地路径(fs://、widget://),Android 平台不支持 widget:// 路径

text:

  • 类型:字符串
  • 描述:(可选项)要分享的文本信息仅支持 android 端

iPad:

  • 类型:JSON
  • 描述:(可选项)iPad 上分享控件的样式配置
  • 内部字段:
{
   arrowRect: {             //JSON 对象,iPad中显示时箭头指向的位置
      x:0,                  //左上角x坐标,数字类型
      y:0,                  //左上角y坐标,数字类型
      w:0,                  //宽度,数字类型
      h:0,                  //高度,数字类型
   }, 
   contentSize: {           //JSON 对象,对话框大小
      w:0,                  //宽度,数字类型
      h:0                   //高度,数字类型
   },
   fixedOn:'',              //字符串类型;对话框所依附的窗口;默认:于当前 window
   arrowDirection: '',      //字符串类型;箭头指向的方向;默认:any;取值范围:
                            //left:指向左边
                            //right:指向右边
                            //up:指向上边
                            //down:指向下边
                            //any:系统根据页面情况选择合适的方向
}

示例代码

var sharedModule = api.require('shareAction');
sharedModule.shareAudio({
    text: '文本信息',
    path: ''
});

可用性

iOS 系统,Android 系统

可提供的 1.0.8 及更高版本

shareUrl

打开分享对话框,分享Url

shareUrl({params})

params

url:

  • 类型:字符串
  • 描述:要分享的有效网址

text:

  • 类型:字符串
  • 描述:(可选项)要分享的文本信息

thumbnail:

  • 类型:字符串
  • 描述:(可选项)分享时的缩略图;要求本地路径(fs://、widget://)。若不传则不显示。仅支持 iOS 平台

iPad:

  • 类型:JSON
  • 描述:(可选项)iPad 上分享控件的样式配置,若不传则在iPad上显示默认样式
  • 内部字段:
{
   arrowRect: {             //JSON 对象,iPad中显示时箭头指向的位置
      x:0,                  //左上角x坐标,数字类型
      y:0,                  //左上角y坐标,数字类型
      w:0,                  //宽度,数字类型
      h:0,                  //高度,数字类型
   }, 
   contentSize: {           //JSON 对象,对话框大小
      w:0,                  //宽度,数字类型
      h:0                   //高度,数字类型
   },
   fixedOn:'',              //字符串类型;对话框所依附的窗口;默认:于当前 window
   arrowDirection: '',      //字符串类型;箭头指向的方向;默认:any;取值范围:
                            //left:指向左边
                            //right:指向右边
                            //up:指向上边
                            //down:指向下边
                            //any:系统根据页面情况选择合适的方向
}

示例代码

var sharedModule = api.require('shareAction');
sharedModule.shareUrl({
    text: '文本信息',
    url: ''
});

可用性

iOS 系统,Android 系统

可提供的 1.0.8 及更高版本

getSupportSharedAppInfos

获取所有支持分享的app的信息 (注意:该方法仅支持android)

getSupportSharedAppInfos({params})

params

type:

  • 类型:字符串
  • 描述:(可选项)支持分享的类型
  • 默认值:text
  • 取值范围:
    • text //纯文本
    • image //图片

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    appInfos:[{                       
    packageName:'',           // 字符串;app的包名
    launcherActivityName:'',  // 字符串;app的入口activity名称
    appName:''                // 字符串;app的名称
    }]
}

可用性

Android 系统

可提供的 1.0.7 及更高版本

论坛示例

为帮助用户更好更快的使用原生插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

是否仍需要帮助? 请保持联络!
最后更新于 2024/04/24