inShare

立即使用

shareImgsTo shareTextTo getSupportedApp

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。

概述

inShare是一个调用系统分享功能的模块,通过该模块能够分享一些最常见的文本,多图到支持系统分享的第三方应用(例如:微信、QQ、新浪微博等)。

使用该模块的 优点:

  • 不需要集成SDK
  • 不会与其他分享模块冲突
  • ios直接在程序内部搞定,体验非常好(不用担心跳转到微信等应用,用户不返回app)
  • 各种平台分享,代码高度一致,通用性非常强
  • 对ios而言,由于是app内部分享,分享成功失败,统计非常准确。

使用该模块的 缺点:

  • 对“图文链接”不支持。如果单纯分享图片或者文字这种方式是最好的。
  • 没有网络的情况不能分享成功。
  • ios不能指定分享到某个特定平台。例如:你不能限制用户是分享到“微信朋友圈”,还是“微信好友”。
  • Android平台分享成功与否是没有回调的

使用模块注意事项!!!

  • 不同的应用对系统分享的实现可能都是不同的,比如:对纯文本的分享,ios的微信不支持而QQ、微博等则支持。
  • 同一应用对系统分享的实现也可能改变,比如:新浪微博ios当下只能分享一张图片,而不久前还可以分享多图。
  • 针对上述情况,本模块只是封装了系统的分享接口供开发使用,至于您要分享的应用是否支持你的分享 则需要用户自己去甄别和测试!(针对一些常见应用的特殊情况在接口文档中有说明)
  • 由于没有ipad设备测试,所以本模块暂不能确定是否对ipad支持,如有需要请测试无误后再用!

shareImgsTo

分享多张图片到其他应用(要求用户有安装该应用并且已登录账户,才可分享成功)

shareImgsTo({params}, callback(ret, err))

params

imgPaths:

  • 类型:字符串
  • 描述:要分享的图片的路径由“,”(逗号)分隔组成的字符串;要求本地路径,相对路径如:fs://、cache://,绝对路径如:var/mobile/Containers/Data/Application/…
  • 注意
    • ios中imgPaths为相对路径(如widget://)时须设置 needDecodePath 参数为true
    • Android 平台不支持 widget:// 路径

sendPattern:

  • 类型:字符串
  • 描述:(可选项)分享打开其他应用的模式
  • 默认值:“MULTIPLE”
  • 取值范围:(注意ios11及以上系统仅 “ALL” 有效
    • ONLY (打开指定应用的指定页面)仅Android有效
    • MULTIPLE(打开指定应用所有支持多图分享的页面选择列表页,如果支持该分享的页面只有一个则直接打开该分享页面)
    • ALL (打开本手机上支持系统分享的所以应用)

app:

  • 类型:字符串
  • 描述:(可选项)模块提供了几个常用的分享应用。若本参数不为空则模块忽略 packageName 和 activityName 参数。
  • 取值范围:
    • qqFriend (Android指定分享到“QQ好友”,ios指定打开“QQ”选择分享)
    • qqZone (Android指定分享到“QQ空间”,ios指定打开“QQ”选择分享)
    • wxCircle (Android指定分享到“微信朋友圈”,ios指定打开“微信”选择分享)
    • wxFriend (Android指定分享到微信好友,ios指定打开“微信”选择分享)
    • xinLang (分享到“微博”)
  • 注意
    • qqZone :Android中 qqZone 代表的是一个单独的应用—QQ空间,而非QQ中的空间。
    • xinLang :很多应用都有多个版本(比如:微博、新浪微博4G版、新浪微博HD…),这里的xinLang对应—微博(安卓包名为com.sina.weibo,ios bundleid为com.apple.share.SinaWeibo.post)。

packageName:

  • 类型:字符串
  • 描述:(app 参数为空时 必需)分享应用的 包名(android)/bundleId(ios)。

activityName:

  • 类型:字符串
  • 描述:(可选项)指定分享到应用的具体页面,比如 分享到”QQ好友”。当 sendPattern 参数为“ONLY”,而 app 参数为空时 必需传该参数。仅Android有效

description:

  • 类型:字符串
  • 描述:(可选项)对分享的描述,只在个别情况下有效,比如:分享图片到“微信朋友圈”时。
  • 注意事项:1、需要已登录第三方应用时有效;2、在ios 11及以上不要使用该字段,否则微信分享会获取不到数据!

dialogTitle:

  • 类型:字符串
  • 描述:(可选项)设置分享选择列表的标题,当sendPattern 不为“ONLY”时有用,若不设置该参数 则用户在“始终”和“仅此一次”的方式中选择始终分享应用后,再次分享时将直接分享到上次已经选择的应用。仅Android有效,且部分机型不支持(如 华为Honor 6A)

forResult:

  • 类型:布尔型
  • 默认值:false
  • 描述:(可选项)是否采用startActivityForResult的方式打开其他应用(采用该方式打开分享完成后会在回调的ret 中返回resultCode值)。仅Android有效

imgSetType:

  • 类型:int
  • 默认值:0
  • 描述:(可选项)用于设置图片的添加方式。仅ios有效
  • 注意:以下两种方式各有优劣,推荐您百度了解以下其区别。
  • 取值范围:(注意ios11及以上系统仅 非0 有效
    • 0 (ios添加图片采用[UIImage imageNamed:name]的方式)
    • 非0 ( ios添加图片采用[UIImage imageWithContentsOfFile:path]的方式)

needDecodePath:

  • 类型:布尔型
  • 默认值:false
  • 描述:(可选项)是否将图片路径转换为绝对路径,当所传 imgPaths 参数为类似“fs://cache/xx.png”的相对路径时,须设置为true。仅ios有效

callback(ret, err)

ret:

  • 类型:JSON对象
  • 描述:android的系统分享并没有成功与否的回调(若需要回调处理,可尝试使用 resultCode 字段,但需注意不同应用可能存在差异),ios有回调。
  • 内部字段:
  1. {
  2. status: true|false //布尔型,分享操作是否成功。true:操作成功,false:操作错误(ios 可用该字段判断分享结果是否成功;Android 在出现错误时返回false,仅在 forResult 参数为true且分享完成(不一定分享成功)后返回 true)
  3. resultCode:-1|0... //int,分享页面结束后返回的resultCode(仅在android平台且 forResult 参数为false时有),一般分享成功为-1,失败为0(实际以各应用的返回值为准)。
  4. errorMessage"" //字符串,错误信息(失败时返回)
  5. }

示例代码

  1. var inShare = api.require('inShare');
  2. inShare.shareImgsTo({
  3. imgPaths:'cache://image/test1.png,cache://image/test2.png',
  4. sendPattern:'ONLY',
  5. description'这是分享的测试图片描述',
  6. //packageName:'com.tencent.mobileqq',
  7. //activityName:'com.tencent.mobileqq.activity.JumpActivity',
  8. app:'qqFriend',
  9. },function(ret,err){
  10. if(ret.status){
  11. alert(JSON.stringify(ret));
  12. }else{
  13. alert(ret.errorMessage);
  14. }
  15. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

shareTextTo

主要用于分享文本内容到其他应用(要求用户有安装该应用并且已登录账户,才可分享成功)

在ios中可通过设置 urlScheme 参数来单纯性的打开其他应用。

shareTextTo({params}, callback(ret, err))

params

content:

  • 类型:字符串
  • 描述:要分享的文本内容。
  • 另外说明:
    • iOS微信不支持纯文字的分享,但也可通过将文本内容复制到剪切板,再打开微信去粘贴来实现类似的效果;
    • Android 微信朋友圈 不支持纯文字分享。

urlScheme:

  • 类型:字符串
  • 默认值:”weixin://“
  • 描述:(可选项)当 sendPattern 参数为“ONLY” 时,ios 通过urlScheme去打开应用(只是打开应用 不做分享操作,可以事先将分享内容复制到系统剪切板让用户自己粘贴)。仅ios有效

sendPattern:

  • 类型:字符串
  • 描述:(可选项)分享打开其他应用的模式
  • 默认值:“MULTIPLE”
  • 取值范围:
    • ONLY (在Android中为打开指定应用的指定页面;在ios中此参数用于和urlScheme参数配合使用 只是打开应用 不做分享操作
    • MULTIPLE(打开指定应用所有支持文本分享的页面选择列表页,如果支持该分享的页面只有一个则直接打开分享页面;另外说明ios中的QQ无法使用本参数进行纯文本分享,可以使用下面的ALL值进行分享)
    • ALL (打开本手机上支持系统分享的所有应用)

app:

  • 类型:字符串
  • 描述:(可选项)模块提供了几个常用的分享应用。若本参数不为空则模块忽略 packageName activityName 和 urlScheme参数。
  • 取值范围:
    • qqFriend (Android指定分享到“QQ好友”,ios指定打开“QQ”选择分享)
    • qqZone (Android指定分享到“QQ空间”,ios指定打开“QQ”选择分享)
    • wxFriend (Android中当 sendPattern 参数为“ONLY”时指定分享到“微信好友”,而当 sendPattern 参数为“MULTIPLE”时指定打开“微信”选择分享;ios指定打开“微信”选择分享)
    • xinLang (分享到“微博”)
  • 注意
    • qqZone :Android中 qqZone 代表的是一个单独的应用—QQ空间,而非QQ中的空间。
    • xinLang :很多应用都有多个版本(比如:微博、新浪微博4G版、新浪微博HD…),这里的xinLang对应—微博(安卓包名为com.sina.weibo,ios bundleid为com.apple.share.SinaWeibo.post)。

packageName:

  • 类型:字符串
  • 描述:(app 参数为空时 必需)分享应用的 包名(android)/bundleId(ios)。

activityName:

  • 类型:字符串
  • 描述:(可选项)指定分享到应用的具体页面,比如 分享到”QQ好友”。当 sendPattern 参数为“ONLY”,而 app 参数为空时 必需传该参数。仅Android有效

dialogTitle:

  • 类型:字符串
  • 描述:(可选项)设置分享选择列表的标题,当sendPattern 不为“ONLY”时有用,若不设置该参数 则用户在“始终”和“仅此一次”的方式中选择始终分享应用后,再次分享时将直接分享到上次已经选择的应用。仅Android有效,且部分机型不支持(如 华为Honor 6A)

forResult:

  • 类型:布尔型
  • 默认值:false
  • 描述:(可选项)是否采用startActivityForResult的方式打开其他应用(采用该方式打开分享完成后会在回调的ret 中返回resultCode值)。仅Android有效

callback(ret, err)

ret:

  • 类型:JSON对象
  • 描述:android的系统分享并没有成功与否的回调(若需要回调处理,可尝试使用 resultCode 字段,但需注意不同应用可能存在差异),ios有回调。
  • 内部字段:
  1. {
  2. status: true|false //布尔型,分享操作是否成功。true:操作成功,false:操作错误(ios 可用该字段判断分享结果是否成功;Android 在出现错误时返回false,仅在 forResult 参数为true且分享完成(不一定分享成功)后返回 true)
  3. resultCode:-1|0... //int,分享页面结束后返回的resultCode(仅在android平台且 forResult 参数为false时有),一般分享成功为-1,失败为0(实际以各应用的返回值为准)。
  4. errorMessage"" //字符串,错误信息(失败时返回)
  5. }

示例代码

  1. var inShare = api.require('inShare');
  2. inShare.shareTextTo({
  3. content:'测试分享内容',
  4. sendPattern:'ONLY',
  5. //packageName:'com.tencent.mobileqq',
  6. //activityName:'com.tencent.mobileqq.activity.JumpActivity',
  7. app:'qqFriend',
  8. },function(ret,err){
  9. if(ret.status){
  10. alert(JSON.stringify(ret));
  11. }else{
  12. alert(ret.errorMessage);
  13. }
  14. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getSupportedApp

用于Android手机中获取当前已安装的支持多图/文本分享的应用信息(包名/支持分享类型的页面类路径)

此接口主要是方便用户获取上面两个接口中用到的packageName和activityName参数

getSupportedApp({params}, callback(ret, err))

params

type:

  • 类型:字符串
  • 默认值:”image”
  • 描述:支持类型
  • 取值范围:
    • “image” :多图
    • “text” :文本

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true //布尔型,操作是否成功。
  3. supportedList:[] //应用信息数组,以"应用名:packageName/activityName"的格式组织
  4. }

示例代码

  1. var inShare = api.require('inShare');
  2. inShare.getSupportedApp(
  3. {
  4. // type:'text',
  5. },function(ret,err){
  6. alert(JSON.stringify(ret));
  7. });

可用性

Android系统

可提供的1.0.0及更高版本