1、就是开发工具包应该是可以用这个开发微信相关软件的。
2、微信开放SDK是采用SDK嵌入的方式,为第三方App提供一个与微信进行内容交换的通道,通过SDK的使用,第三方App可以实现分享信息给用户的微信好友和用户的微信朋友圈。
shareSDK的一键分享中的微信分享,在分享成功之后会弹出一个提示窗口,
一个是分享成功的提示,
一个是返回第三方工具的选择,
一个是留在微信的选择。
需要把弹出来的窗口的返回第三方工具这几个字换成返回我的应用。
这样明白了么!
最近项目中,微信SDK针对 iOS 13系统版本安全性,进行了对应升级,微信SDK版本为openSDK(186+)。在微信官方介绍中,1861 版本开始支持Universal Links方式跳转,对openSDK分享进行合法性校验。
环境
SDK版本: SDK186或以上
微信版本: 707或以上
系统版本: iOS12或以上
1)根据 苹果文档 配置你应用的Universal Links
微信对Universal Links配置要求
a)Universal Links必须支持https
b)Universal Links配置的paths不能带query参数
c)微信使用Universal Links拉起第三方App时,会在Universal Links末尾拼接路径和参数,因此App配置的paths必须加上通配符/
12 确认App的Universal Links配置成功
微信使用第三方App的Universal Links唤起第三方App时,会在Universal Links末尾拼接路径和参数,因此开发者Universal Links配置必须加上通配符“”,并测试Universal Links拼接字符串能否唤起app
例如:我微信开发平台配置Universal Links为: https://wwwabctestcn/
appID格式为:TeamID + + BundleID
TeamID在开发者平台找
21注意事项:
自己创建一个名叫 apple-app-site-association的json格式文件,注意文件命不需要添加的后缀。 apple官方参照地址
注意 用于在paths 数组中指定网站路径的字符串 区分大小写。仅将URL的路径部分用于比较。其他组件(例如查询字符串或片段标识符)将被忽略。
22上传apple-app-site-association到服务器(服务器需要支持https)
保存设置,然后重新生成配置文件。
·在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏下的“URL type“添加“URL scheme”为你所注册的应用程序 id:在“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(如下图所示)
1:必须在IOS9及以上。
2:当在浏览器中点击Universal Links时,如果这个link和页面是同一个域名,则不走调起,而是当做普通链接在当前浏览器打开。
3:在测试阶段,微信分享或者支付不要打开代理抓包,这样也不走调起—— 特别注意留心
4:成功调起app后,app的右上角的 state bar有在safari( letvcom )中打开的选项,如果你点击了它,它会跳转到safari,同时系统会认为你选择使用safari打开该域名的链接,而不调起app。以后你再点击该链接,它只会在safari里面跳转。
(1) 在safari页面中,手指往下拉动一下页面,会显示出一个“隐藏”的banner,俗称 smart banner,右侧是一个button:打开(open),点击它,就又会开启app跳转功能。
(2) 把链接粘贴到备忘录中,长按后选择 在XXAPP中打开。
方法如下:
下载官方的sdk demo,下载地址:http://openweixinqqcom/download/lang=zh_CN
解压,并将工程导入到eclipse。解压出来的时候,发现根目录下有一个debugkeystore文件。
在上面说到项目的根目录下有一个debugkeystore文件,因为编译、签名apk的时候,用的是自带的那个debugkeystore,每台电脑都是不一样的签名文件,而且微信那个APP_ID已经签名文件debugkeystore绑定了的。解决方法就是将微信的那个debugkeystore拷贝到电脑默认的那个debugkeystore位置,将其覆盖。。
再次运行,分享就成功了。
一、获取帮助文档并下载相关资料
首先打开微信开放平台:https://openweixinqqcom/ 如果没有注册,请先注册并上传开发者资料等待审核。
资源中心----移动应用开发----分享与收藏功能----Android开发手册
开发手册链接地址:https://openweixinqqcom/zh_CN/htmledition/res/dev/document/sdk/android/indexhtml
资源中心----移动应用开发----接入指南---Android接入指南(下面我们主要参考这个)
二、接入微信分享功能
1、申请AppID
如何现在没有AppID可以先下载官方的Demo使用Demo中的AppID即可。
SDK和Demo下载地址:https://openweixinqqcom/cgi-bin/framet=resource/res_main_tmpl&verify=1&lang=zh_CN&target=res/app_download_android
开发工具包(SDK)
使用微信分享、登录、收藏、支付等功能需要的库以及文件。点击下载 Android开发工具包
使用微信语音识别接口、语音合成接口。点击下载 语音SDK+Demo+开发文档
使用微信图像识别接口。点击下载 图像SDK+Demo+开发文档
使用微信卡券功能接口。点击下载 卡券SDK+开发文档
范例代码
包含了一个完整的范例工程。该范例的使用可以参阅Android平台上手指南:HelloWeixin@Android。点击下载
签名生成工具
用于获取安装到手机的第三方应用签名的apk包。点击下载 签名生成工具下载完成后我们可以参考一下Demo来集成。
2、下载微信开发工具包(在上面已经下载)
3、开始搭建开发环境然后将libammsdkjar文件拷贝到工程lib目录下。
注意:如果使用的是Demo中的AppID则包名一定要先和Demo的包名一致,否则分享会出错。
4、新建一个Activity在里面放置一个按钮<喎�"http://www2ctocom/kf/ware/vc/" target="_blank" class="keylink">vcD48cD48cHJlIGNsYXNzPQ=="brush:java;">package netsourceforgesimcpux; import androidappActivity; import androidosBundle; import androidviewView; import androidviewViewOnClickListener; import androidwidgetButton; import comexampleweixinsharedemoshareWeixinShareManager; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { superonCreate(savedInstanceState); setContentView(Rlayoutactivity_main); Button button = (Button) findViewById(Ridshare_weibo); buttonsetOnClickListener(new OnClickListener() { @Override public void onClick(View v) { WeixinShareManager wsm = WeixinShareManagergetInstance(MainActivitythis); wsmshareByWeixin(wsmnew ShareContentPic(Rdrawableic_launcher), WeixinShareManagerWEIXIN_SHARE_TYPE_TALK); } }); } }
1
2
3
4
5
<relativelayout xmlns:android="http://schemasandroidcom/apk/res/android" xmlns:tools="http://schemasandroidcom/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context="MainActivity">
<button android:id="@+id/share_weibo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="分享到微信"/>
</button></relativelayout>
4、开始创建我们的分享逻辑类并实现需要的分享功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
package comexampleweixinsharedemoshare;
import androidcontentContext;
import androidgraphicsBitmap;
import androidgraphicsBitmapFactory;
import androidwidgetToast;
import comexampleweixinsharedemoutilWeixiShareUtil;
import comtencentmmsdkmodelmsgSendMessageToWX;
import comtencentmmsdkmodelmsgWXImageObject;
import comtencentmmsdkmodelmsgWXMediaMessage;
import comtencentmmsdkmodelmsgWXTextObject;
import comtencentmmsdkmodelmsgWXWebpageObject;
import comtencentmmsdkopenapiIWXAPI;
import comtencentmmsdkopenapiWXAPIFactory;
/
实现微信分享功能的核心类
@author Administrator
/
public class WeixinShareManager{
private static final int THUMB_SIZE = 150;
/
文字
/
public static final int WEIXIN_SHARE_WAY_TEXT = 1;
/
/
public static final int WEIXIN_SHARE_WAY_PIC = 2;
/
链接
/
public static final int WEIXIN_SHARE_WAY_WEBPAGE = 3;
/
会话
/
public static final int WEIXIN_SHARE_TYPE_TALK = SendMessageToWXReqWXSceneSession;
/
朋友圈
/
public static final int WEIXIN_SHARE_TYPE_FRENDS = SendMessageToWXReqWXSceneTimeline;
private static WeixinShareManager instance;
private static String weixinAppId;
private IWXAPI wxApi;
private Context context;
private WeixinShareManager(Context context){
thiscontext = context;
//初始化数据
weixinAppId = WeixiShareUtilgetWeixinAppId(context);
//初始化微信分享代码
if(weixinAppId != null){
initWeixinShare(context);
}
}
/
获取WeixinShareManager实例
非线程安全,请在UI线程中操作
@return
/
public static WeixinShareManager getInstance(Context context){
if(instance == null){
instance = new WeixinShareManager(context);
}
return instance;
}
private void initWeixinShare(Context context){
wxApi = WXAPIFactorycreateWXAPI(context, weixinAppId, true);
wxApiregisterApp(weixinAppId);
}
/
通过微信分享
@param shareWay 分享的方式(文本、、链接)
@param shareType 分享的类型(朋友圈,会话)
/
public void shareByWeixin(ShareContent shareContent, int shareType){
switch (shareContentgetShareWay()) {
case WEIXIN_SHARE_WAY_TEXT:
shareText(shareType, shareContent);
break;
case WEIXIN_SHARE_WAY_PIC:
sharePicture(shareType, shareContent);
break;
case WEIXIN_SHARE_WAY_WEBPAGE:
shareWebPage(shareType, shareContent);
break;
}
}
private abstract class ShareContent{
protected abstract int getShareWay();
protected abstract String getContent();
protected abstract String getTitle();
protected abstract String getURL();
protected abstract int getPicResource();
}
/
设置分享文字的内容
@author Administrator
/
public class ShareContentText extends ShareContent{
private String content;
/
构造分享文字类
@param text 分享的文字内容
/
public ShareContentText(String content){
thiscontent = content;
}
@Override
protected String getContent() {
return content;
}
@Override
protected String getTitle() {
return null;
}
@Override
protected String getURL() {
return null;
}
@Override
protected int getPicResource() {
return -1;
}
@Override
protected int getShareWay() {
return WEIXIN_SHARE_WAY_TEXT;
}
}
/
设置分享的内容
@author Administrator
/
public class ShareContentPic extends ShareContent{
private int picResource;
public ShareContentPic(int picResource){
thispicResource = picResource;
}
@Override
protected String getContent() {
return null;
}
@Override
http://www2ctocom/kf/201410/346762html
使用微信SDK分享WXAppExtendObject数据给好友,好友点击跳转MyApp的某个页面(需要在分享时传递构造跳转Intent的参数)。
1该类型的分享(具体请参考微信分享SDK)可以带几个参数,参数中必须附带一些构造跳转Intent的数据。
2好友点击分享的内容,回调IWXAPIEventHandler接口的类的onReq方法,具体为
ConstantsAPICOMMAND_SHOWMESSAGE_FROM_WX:这种情况才会调用,此时可以取出分享时附带在参数中的一些数据,构造一个跳转Intent,调用startActivity(intent) 来打开MyApp。
由于是项目实测,这种实现方式的截图也就不传了。
问题1:该分享方式只能分享给好友,不能分享到朋友圈。
问题2:如果好友没安装MyApp,点击微信中好友分享过来的消息后无反应,无法提醒“未安装MyApp,请下载”,因为这些逻辑要实现的话本身就是在MyApp里面写的,原本没装的话根本无法检测。
问题3:WXAppExtendObject类型的分享,数据有大小限制,
extInfo(String)限制2KB;
fileData(byte[])供第三方使用的文件二进制数据,最大10M;
filePath:(String)Local directory of the file provided for applications,本身长度最大10KB,文件大小同上,不超过10M。