From e7d34c677f777219f10667e395a0d5931693e11f Mon Sep 17 00:00:00 2001 From: little-snow-fox Date: Tue, 19 Nov 2019 14:48:47 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=9B=BE=E7=89=87=E7=9A=84=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=20ios=20=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 27 +++++++++++ .../com/theweflex/react/WeChatModule.java | 27 +++++++++++ docs/build-setup-ios.md | 3 +- image/url-types.png | Bin 0 -> 53769 bytes index.d.ts | 3 ++ index.js | 19 ++++++++ ios/RCTWeChat.m | 45 ++++++++++++++++++ package.json | 2 +- 8 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 image/url-types.png diff --git a/README.md b/README.md index 980b47e..02cb2d3 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,33 @@ WeChat.shareImage({ ``` +#### ShareLocalImage(ShareImageMetadata) 分享图片 + +ShareImageMetadata + +| name | type | description | +|---------|--------|-------------------------------------| +| imageUrl| String | 图片地址 | +| scene | Number | 分享到, 0:会话 2:朋友圈 3:收藏 | + +Return: + +| name | type | description | +|---------|--------|-------------------------------------| +| errCode | Number | 0 if authorization successed | +| errStr | String | Error message if any error occurred | + + +```js +import * as WeChat from 'react-native-wechat-lib'; + +WeChat.ShareLocalImage({ + imageUrl: '/sdcard/test.png', + scene: 0 +}) + +``` + #### ShareMusic(ShareMusicMetadata) 分享音乐 ShareMusicMetadata diff --git a/android/src/main/java/com/theweflex/react/WeChatModule.java b/android/src/main/java/com/theweflex/react/WeChatModule.java index 3f8ced0..b1130cb 100644 --- a/android/src/main/java/com/theweflex/react/WeChatModule.java +++ b/android/src/main/java/com/theweflex/react/WeChatModule.java @@ -239,6 +239,33 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv } + /** + * 分享本地图片 + * @param data + * @param callback + */ + @ReactMethod + public void shareLocalImage(final ReadableMap data, final Callback callback) { + FileInputStream fs = new FileInputStream(data.getString("imageUrl")); + Bitmap bmp = BitmapFactory.decodeStream(fs); + // 初始化 WXImageObject 和 WXMediaMessage 对象 + WXImageObject imgObj = new WXImageObject(bmp); + WXMediaMessage msg = new WXMediaMessage(); + msg.mediaObject = imgObj; + + // 设置缩略图 + msg.thumbData = bitmapResizeGetBytes(bmp, THUMB_SIZE); + + // 构造一个Req + SendMessageToWX.Req req = new SendMessageToWX.Req(); + req.transaction = "img"; + req.message = msg; + // req.userOpenId = getOpenId(); + req.scene = data.hasKey("scene") ? data.getInt("scene") : SendMessageToWX.Req.WXSceneSession; + callback.invoke(null, api.sendReq(req)); + + } + /** * 分享音乐 * @param data diff --git a/docs/build-setup-ios.md b/docs/build-setup-ios.md index f06ffe5..4bbf6c7 100644 --- a/docs/build-setup-ios.md +++ b/docs/build-setup-ios.md @@ -12,7 +12,7 @@ Add "URL Schema" as your app id for "URL type" in Targets > info, See the following screenshot for the view on your XCode: -![Set URL Schema in XCode](https://i.loli.net/2019/08/31/yUD2F5MrPKjngo3.jpg) +![Set URL Schema in XCode](./../image/url-types.png) Cannot go back to APP from WeChat without configuration. 如果不配置,就无法从微信重新回到APP。 @@ -27,6 +27,7 @@ then add: weixin wechat + weixinULAPI ``` If not configured, apple will prevent you from jumping to WeChat due to security permissions. diff --git a/image/url-types.png b/image/url-types.png new file mode 100644 index 0000000000000000000000000000000000000000..d7fc5bf5f1e60f09c0302d134d81535c03652afc GIT binary patch literal 53769 zcmeFZby!sG_BT#SNeevEASJ0NAPs_~lyrA9bV-K@h=fw2lpx*RCEc9^42{H)GQ=>$ zZ}U9Q_nh;7kDkANf4uK?ow=^fZ1%qQ9qV5AxPFA)KmMAE4k%>uI8u9()z1#2!DlQ__ zhhGIGg;2k}q4ja%e@-ID_LvEStf{g-gyUTVHX9zJW=9Q5C3#l}h*)*Mkv=P{Gzyc7 z{Sckj^t|PCS@?2k9ywuxi82wEvgT||=;L4@LL-17CxJ>7 zj5=oR#>8l4V?!_DV1;b*ugA>nzkGXXQ5tx2)ApG$nROKfC5$n(FVT5|SnTb4R_YJW zNKrI!)@Jq7AAa75$L5IofJS_fvaw+sz}p`=d2P$i!n;U{^7KB6NXjrdE4qZ%i|e19 z%Df-Lha~1+^^su{Z#~!_SgmTno@Ef>5%r&Ef=JIjJLY-)@h0hsT2lP5a?-IokNVql z5;G zi+38-Y6m%h^qg1jvf}vZREne&_ub!;Z+>8<)65Cn`#2Xb*y(V*-#RhHmXa}Q-hX0! z`oP@knIaL5Nax3?h@kmDR8ovN@sp=VNw0i{4)z}Gi5i|H2Vio}FT4!+mQm~lb3lkN zxbf#PX=zaG3Jqu%Az95) zB}RNAN?nB#G+))qY=lz1i%OsIc<+hKLA4(ViZzAnx3ywhI-e7)(B^>GnRlmx$j8uo z+NldhXrG~bt>9lvVn<-OnBc6Sh{<7@l~Whrp_1V4!vc43tKzb^2dH8Z1V6|mOU1D6 zc;QU;Gbq5B?rxCj5y|@yLKEr`dTQz5{5Z;Q`1d8O;`q9P3>ci)h;YN#GBMchlRSTA z!&i+n5RUuxRX#~!ctEhSg!R`!RUUT=$~Q8Zbz>BNV8)wT>X7ok+3vji2?wkF!;#su z`y)YBtJL09258zHSgYh0oPJ~n;aDrlM}OdE%CS)@U|GhPWs0aVu;@_tc=+y<>-RhI@8D`i1(qd$r)geQ0>hbGNbkKWcuI{CMR~(}?L$>yIuPLHi=G zSM?F)A5Y$sz731)W-?DQcYWObiE_wg2=k@5)gPy*QQZ^eGCEkrbo>NgLJY%}-YrFe zdOS^hE2QQgQxoL9ebU*m^4!_MfQ6f)4$F(k>&|RARgeGo_@f1H`({EhTAnVaE{b)k zqr7AP3+oG)5VVe<6=`e+XB-Y3%r|z=g;#}4KRr^`V4@^8jQG%XZ|#m5PDP}5@I}x? zj5OoUM{0RfCRAI|f;aA;+#{dLUA@#|{PIz>KdSH53BM~>L#SW!bngcT=d8c7mVa=Y5{(?~1YEgeuFRtIT8wGmk|+NWBIn&7W9g)mi`630T?+*Sks zj4RADZMVd2q0!Bu;V-@x2cq~oof;1e%oBS8qU|ZoKkI#N{meKl`g!}QvF&*EV$G}S zch$=F(KhNehBcTAFBYt;jmI>9y!4@Lc@vN>R+#;DJ@3JE!PL&o{aL<==!vC#a4}pp zHotdFae`xFZ;EPqc7|}mxCD|PI2vTq{%D12pZ^E%g^i8HALjM*<thkdq9w**H>M~Xgs zfm0nuo{sW5J*BJ8)Wy(qsJ5x`7BvnGxW1-2ZQ2T~tFC%kRb1Qblw+~!R5M<BYQ;NHh+aXyY8CAQ{ zK4fpS6x~tC(V>pLuJ^#_z~G$n-1;S{749khX-#-e_}qGZudE8|C|^2_5gU(jnMj$V z6Z0Y4;j2Sgu|~0ev1qaER?pTVKjG^~0jL4O*N#TPX8rStIPDdb?$NXS-s# zej3%=uO2Zry=aJXthH?5)ta}sNe ztB7EeAWy@=BI5z}Xqa}NZ_>s`jZZ&C=9ynxpI}3xjfVo6kM1SlE`Pho(fH=~5?{VV zDNQa)-d?#kkM&yy5j&20*mkllmwrXDwgt-o8NS6c%l&~r$gm>pnc^%ezHzDFCzhW5 z)-yr(EmXHu*HSklNtQ>v@wrQwb9YT*E=OIlUlKIl--OJE%vy8XE^V4hi?GzRw7>wb zM9Bc$pzLHg(ztroy0^zqB=F7g0+hYk^F8`dpxeQ2bbLrRA?#0TnIr#OtROT(a62)(anR?wkSm6 z{Oy!&-DdJ}sQG4ZLGP(vW>O+ocFFZjaBY3Xs=QpaP(iDXcGonPjPW|RC5AaYaxD9_cc$Y@adu)9i%!yA<-@b2J;L`uqA{Y-7Cax7^MX z|8Ych{3WtZA5zd#np39}oXYxK4K}R^VR|p!X!=CT!I-yf`vjhzSI>qDdaPdX$uv9u_At4J(JGsi$YM3 zPE2)O$9Cp}fdQug@qe3#b7V|9 z2tPh9p?nDAMxnVsdF8M0{Vqd89eQ8?q2p_u3vD>o%^tqnk)D(t0A}A=>d0FuDWR|f z=h!G1sFWy}z!@rVh@n#b<6H)n4F&zr>u4w_;kGCkf0t1PzHdKqz;XM`U*G5--=bgv z|B(QPcP85Zl*TO2ME{?2)Ck}niln-fygcx&ZtiMn>F8$TS-P9jdxIPt-GsbF z8UHLH1f1Vq=3%7&vxvLBD5H*&D!r7Gt0g@j_fzgijAFR-^zj}4$t2NJKK|w*DN4z||yj(yDF1Oc??xx;cj&2YBs^ov_k+yU* zceQnPw{>!)zpdBQ%*n%Dl#%hap?`e->Zhf*?LS*`bo+Z)zyNt}@9;e4e#G;Sx`9VU zZm$Zd+Im|$=t$dw0GR=8h&_JF$1n2d1OImGpH2StsHU5xtCSN6c+y?$pHlz(;eWmP zzaRXwP2GRC`9zTSUz_}wJAXeZ!gD+He-XuBa{luwAZRgM5uSfcniwvu-s>eWkJPr( zDjL8ypk;r4x`4lIz;XKx99G4RwWz)*C=w|0(vlk9sQYPH_4i)Pyd@N5!(L;I_@kYA zrW{`Ohv#rU_9s>1N2qu1NgBG%beFT6VW{1WKvhFUeZZn+*tz=|6FmZ3jvN(L9(hWp z4^n}oG`NMQ__8*iiJU8k@9q}X`Q#S13i%i64G!xgtT3=8P|%2iP%!9GQ2*^zBAqz@ zZBUvu-*eAj-TwQbc4CS4Ey>?haa$(1nJFkJEqVHR?tiF-ehu@4K#+Sres0#djahL zW9M!W%Io@_2vIO_Lr~B>B{fJ>-u!bM|4Ue^J{Uyhie)1YAOCh>!6EcPL54)r(ku+W zn5e&MPM}4_*q#2x5@rT@BS;A-!6&&ist_r(J1J(m#SsI zd=a&t{DwyHlk!`{4osx{Xsw zJjS$Q_v+FP5bN9um6H~o`0=Uoe%_a5gV1E-Bo;AUMp>2pnQ7%8e$5YqO0W_Dy>+sFJA+gklyCWMgn)^Z#qv|8pU;%VZ8(J`S(f8C!fpzBLFwf=J{-Jn|4QKqm$V-Y4|2CIlP3?tNIAZuv zZ?=?meuys69j+4lhocg|9Z4#l({-&?w7)nM3w~8p2HN;B4%6I!LcLHYzK9G!HgtRi zJ2ox##Q1X0sd$;kwq18SHtt-xXE%Arv#Qjl=UI-FJ{K75?Bmj}t;RZ_bEvVKb!~ue ztgGxVp7O|jnzS0`uT|u39P^y_NM5-XfcV+xWsGyo&B~nZPJ@nG&_P8ddQIztN!(TO zDo|6m?UCrHUV`75wm8~gcG7ZY`c@(2i+B$=7Ss7kOHWmB=YBX{K;MR|*YLP3o#pmV zF^>9x_8?)0p*fe1R>+U@SbNZ6%lS!@=S2TfC_IMttQtgAxkkYFfy~E~v&mpG%<6Fz%sI}ot~l7g9{Ki*!%1B{qLfRodG0fEm9TaR2FC0aL;f&_ zJMK=Iv;_43tq@T@aL*24m-wudUt zAvY=tv-hK^1S$=^=DR(k8#d$Ujw4A~=dCjW9bJbjShjqa)#d`4pauc@b#|8cRQwT_ zj5qxaHpHVD=E%WG{3R99Ze@`Qdm_;foBqR}`9Rl$ZB6kXVjUtE#J-V~H@WXPsy7f)LPEtnhEi;G1qC=B=x>npvZ=F}_GfYyI}5 z2%inLv^7VMoo)(UuvEbLnW*Q!nztemtw*0YoFqK# zXyqT-@vo)v|M{V#VmsZp!x0*&U*2{IL0ZikxLKCpEc+gUnUjqi>y}ScSatTgRPX{S zRm2gTBeL~vCPSYp_*Y=U2*;z>Jv(`VrsB_t7RENDA#S5}FQUjXW%*FYwo|K044XPb z%vbT1EEe4-hn3|B=~QZIYT^$3o(p^t6%IJ=DGw?US@JtA;dfp!l>AtL;lQ=^Yy;^V zTAvY!3`?8b_A=h?!1=veC14a9v}+wye_96SHGwx9xiPrjYYjT?7$7S5br+v*^w?Xg zaw=;+DeR}z`&x*(pXRwRe$ePv@~QNCC|$HyDC4NfvU0Jh+6khZXHdVHgoIt=@$}%# zAq^@=kriPNd&9_cMUeI8(4i-TS1|;};tv61hs2~vxlZMf=F07KLBIycI7$@j;vJTo zUn5n&kG{pHTByp-z!~BC)Ycv&2)i(WI87Dnb{hGtzV`LmkfY+=khCU4DhydS5&k*e zi^aKdtvVx73d0#N$lU2}@w22Bp_d9_|@d&MM9 zc{Y=qXQ#4X_@P)}(_UzaWau49ACe?+&EX%UPTGQPV}#;AC05=^*%Ac0zA3o`MfWfG zo(>D(l~RdZ1b8W9(Z19D;VbY&@9t@76V^h=r_H(x==c^-2VdpKfYt8g5QH>UN$uhU zt@ldnibmlJa?P0T$J!jYu9F{2gGw&E76ZN@j$?)GC&SERg})lOEcI@Z{tg7|DAMy_ zI9M{LVbWApIGfk6RdJbcfN-*K10ybzm#w~(EO}lSdrP+Y5tU~jh#a(9XNsNWEZY6TL>G3&3vf%-&lUv%|#LR)XOKdxRoAbTCLuKTWfOp)qaan*fXmoOyOO7 zJhS~+LeUg{{T_bgIMm(0*x-h6{H}7jtA+IUhRr|rgwwP&-8t^f&LATzFRQ8J4H?#R`ko?}rf2;vdRSD9}8g zA&zPn6dss(J0Y8Dz4~eGhO2rVi*sk66ui?C^~xEBAgA|fk4jL=<+iP7DV={!S}R<*zu zo;;)Wta|J-HCfwnhYDl+BWRKQ6jPLc15fYxM6z8=Y-6Ug=}@QDufgMocfwiI!9u%e z_+k*X$4gc?vlXHks8X2L#eKz2YCAh=CRP;o2LJVnWYhM6Fesd+Ry(2kdk1J!z$ej{ zo4f5NNs&>u&-cBA?eXm1IdnoXoze{3>FnLfa4b5%xwoQMpCC$Cx@xFR+GS7n>&*j= z$Es8yr~6f-Vk)1-Sbw`AR$`nev}?g=sa-Sr75J&Ek4(?g3n-9yy((Vt{0Fh+V*Wl@ z$|}KcAr#2I6A2H#DjWNWfW501s&mUjIG5Q%yu-N8)gGeP7 zFiw=)W4M2Of`(CbS|DMwZ41E8Mn?Tv&^$NIQ>N@$9r^f+n*ijcweU$kgv-7Y&GW)Q zgF2ZWoU-Azf(3g_B3O9JV zd9;87^`cmFeI@}5X}SGOv2Cn4EJA;1+*rhM@iaG#%|8NnuB;9DR_W7Gt~ky4Wk)z2 z2DiwXGShs+RUwB%8v=$u0^5K6RwE|)!NQ^0v0}AR+^tg$IOB}bm18qz zF}Uij@DYm|&cQu>)3Xa-oLUn%9OgR#J1k7&R-NYWS;mXAliuj{3{aV)h99tv{`it@ zTkFQo6Efscs8q4qx{PFX&f~TPx2+LA-Qd|mLyl)+4s+(P6)8et0hUpbGmBK=q)21s z_c&{ApxGtQ$W!rU@hxjVgRW8UxRo1zCh1tp%LG1~v38nE&@iPv-RUKb(Mw*RXcz~h ziGb}yS9*Y*cid3(>(l+Yb!F`T;KEHjh)YJRtt`c)Dbg&mDr>#c^I`6Pl*F0C)AZ8} z9C(9xl}rEiwAA;`e7;)t`dSW2xqXixA0gFMIiLM9XZ=>R0Lxs>?3o)}4R4?RRYq7r9;S^WCI5fnD!oZ z^626Da-jH}O0^m>s{Uvxi;Umc6Sr-{HvM<-b-(AoBghJHHcEohguwISzPkmi;9&Tn z6Bj>-IQgP5u_#qIs+W$=kra7WR`0g(dhJ*iU3{p@dbDDM)jc|D@}OJ_`h6}WMoexW z1UZ(Aw~vt`w6&)&_WLTHcyjtZio1eP?BbDS>QO%)&ojtEjqni7#Pdkjba%T3u}_B$ zaAmM*I5gB^gHrlH>gRm|Q&fFhW7nO{nY{CP)TYhBr1|h0M4ybvS#>|N;?wBZMAV1dZ@q+kWjY>1&q^ovfXT z<=$YsSw1;UW7mjnNO|qJSk>`8sS-`R$SdPbvb2BDEgXi8_tLSxAC&wZpGGeTkaE~m z4M}6q1NjPPooAXMe(;hKg9cubq6^PWs;gi)ReM;5~kJ6FO%TeTqDn zAwIcvnP|`gq4=}58B6Y$&Jt0c3SCLlXDW{$H#TR!pw_QloU)rO1&LojS|aD>y!mYN zxe?aC8jH2oK#mLSf$IYv4@i_)$B}Oz2kxkd3N9AT>g;J7##0(LrrX$?kzfCo{mnE3 z7)g$vq9105wR@#AMYH#3>;}0?WQH~)2~TGIC;Ibx8g7oZKLVKCkHL@DeJt4X(lQxC zH!%!>kfOzgJy{w<`$i+|iOt=1{jO*qaudM%A55`a20)Qs6~E)%a_RMSMf0q7RuLDS zIJp0e&1Viu5gJqy@@9}>mfNr~%|g%l@nres)|YuH!bQ3Z;+xsFg}Qn&JSvF*x_wDL^AMS%|Dj!Hy}9$FXax?9yG6I5V?I&i;%?AKB!)gk(`0} zz(M*gJ|5-9>#R$mMesRAFPg5Wn9#DMUdM z)IeL$sQ3R+Bk^hS4zvB6gY5lME{NJ~@GJ~+)g|=+=#@99Ajssqv2bUCc@5ngVQ{lG^ zOc1h8r^;%0f28T47TAD|SD)7Z8eC-71GbdH3-L+_d*e;}daRh)uz>BsMC(zO;(jQh zSn-iRf!GiFrv1vOB@bi2FJ{6~m$y_zJ{(PGKd}Ypbq3-0?P>Q;Y$g*>153D!Mt9ElRutr53 zK9t05Nar_21qm`#jqhDi}IGj!s*rr!wrwc?>4TS ^cQZ&Sv~O5aj?p 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 aEV&2oLHzEC+X_YA$; + export function shareLocalImage( + message: ShareImageMetadata + ): Promise<{ errCode?: number; errStr?: string }>; export function shareMusic( message: ShareMusicMetadata ): Promise<{ errCode?: number; errStr?: string }>; diff --git a/index.js b/index.js index 9d7468b..0a1d793 100644 --- a/index.js +++ b/index.js @@ -151,6 +151,7 @@ const nativeShareToFavorite = wrapApi(WeChat.shareToFavorite); const nativeSendAuthRequest = wrapApi(WeChat.sendAuthRequest); const nativeShareText = wrapApi(WeChat.shareText); const nativeShareImage = wrapApi(WeChat.shareImage); +const nativeShareLocalImage = wrapApi(WeChat.shareLocalImage); const nativeShareMusic = wrapApi(WeChat.shareMusic); const nativeShareVideo = wrapApi(WeChat.shareVideo); const nativeShareWebpage = wrapApi(WeChat.shareWebpage); @@ -211,6 +212,24 @@ export function shareImage(data) { }); } +/** + * Share local image + * @method shareLocalImage + * @param {Object} data + */ +export function shareLocalImage(data) { + return new Promise((resolve, reject) => { + nativeShareLocalImage(data); + emitter.once('SendMessageToWX.Resp', resp => { + if (resp.errCode === 0) { + resolve(resp); + } else { + reject(new WechatError(resp)); + } + }); + }); +} + /** * Share music * @method shareMusic diff --git a/ios/RCTWeChat.m b/ios/RCTWeChat.m index e92d230..d190437 100644 --- a/ios/RCTWeChat.m +++ b/ios/RCTWeChat.m @@ -284,6 +284,51 @@ RCT_EXPORT_METHOD(shareImage:(NSDictionary *)data [WXApi sendReq:req completion:completion]; } +// 分享本地图片 +RCT_EXPORT_METHOD(shareLocalImage:(NSDictionary *)data + :(RCTResponseSenderBlock)callback) +{ + NSString *imageUrl = data[@"imageUrl"]; + if (imageUrl == NULL || [imageUrl isEqual:@""]) { + callback([NSArray arrayWithObject:@"shareLocalImage: The value of ImageUrl cannot be empty."]); + return; + } + NSRange range = [imageUrl rangeOfString:@"."]; + if ( range.length == 0) + { + callback([NSArray arrayWithObject:@"shareLocalImage: ImageUrl value, Could not find file suffix."]); + return; + } + + // 根据路径下载图片 + UIImage *image = [UIImage imageWithContentsOfFile:imageUrl]; + // 从 UIImage 获取图片数据 + NSData *imageData = UIImageJPEGRepresentation(image, 1); + // 用图片数据构建 WXImageObject 对象 + WXImageObject *imageObject = [WXImageObject object]; + imageObject.imageData = imageData; + + WXMediaMessage *message = [WXMediaMessage message]; + // 利用原图压缩出缩略图,确保缩略图大小不大于32KB + message.thumbData = [self compressImage: image toByte:32678]; + message.mediaObject = imageObject; + message.title = data[@"title"]; + message.description = data[@"description"]; + + SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init]; + req.bText = NO; + req.message = message; + req.scene = data[@"scene"] || WXSceneSession; + // [WXApi sendReq:req]; + void ( ^ completion )( BOOL ); + completion = ^( BOOL success ) + { + callback(@[success ? [NSNull null] : INVOKE_FAILED]); + return; + }; + [WXApi sendReq:req completion:completion]; +} + // 分享音乐 RCT_EXPORT_METHOD(shareMusic:(NSDictionary *)data :(RCTResponseSenderBlock)callback) diff --git a/package.json b/package.json index 79c305e..0f78823 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-wechat-lib", - "version": "1.1.2", + "version": "1.1.3", "description": "react-native library for wechat app. 支持分享和拉起小程序。", "main": "index.js", "scripts": {