微信开放平台微信分享与收藏功能介绍

功能介绍

微信分享及收藏是指第三方 App 通过接入该功能,让用户可以从 App 分享文字、图片、视频、网页、小程序、音乐视频至微信好友会话、朋友圈或添加到微信收藏。 微信分享及收藏功能已向全体开发者开放,开发者在微信开放平台帐号下申请 App 并通过审核后,即可获得微信分享及收藏权限。 微信分享及收藏目前支持文字、图片、视频、网页、小程序、音乐视频共六种类型(海外应用支持网页、小程序类型分享)

注意:若移动应用未上架,则天分享量受限制为 100 次,包括分享到会话和朋友圈,用于满足调试需求。

为了降低接入成本,优化开发体验,平台近期在灰度测试一个新的SDK,通过该 SDK 可以简单、高效、安全的实现网页分享功能,了解详情

接入流程

详见:

微信开放平台WP8接入指南

微信开放平台WP8接入指南

注:本文为微信 WP8 终端开发工具的新手使用教程,只涉及教授 SDK 的使用方法,默认读者已经熟悉 VS2012 的基本使用方法,以及具有一定的编程知识基础等。

1.申请你的 AppID

请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得 AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。

2.微信终端 SDK 开发包

SDK 开发包包含 3 个文件:

-MicroMsgSDK.dll(每个第三方应用必须要导入该 sdk 库,用于实现与微信的交互)

-MicroMsgSDK.XML(API 文档,放到与 MicroMsgSDK.dll 相同的目录,在 VS 中可以提供帮助,如查看函数注释)

-Google.ProtocolBuffersLite.dll(Google 的 ProtocolBuffer 开源库,用于序列化数据,引入即可)

请前往资源下载页下载最新 SDK 包

3.搭建开发环境

[1] 在 VS2012 中建立你的工程。

[2] 如下图所示,右键点击工程的 References,在快捷菜单中选择 Add References,在打开的弹出框上点击“Browser”按钮,然后选择 WP8 平台 SDK 开发包 中的两个 dll 文件。

[3] 引入 SDK 的 dll 后,在 References 下可以看到引入的 dll 库。(如下图所示)。

SDK 的名字空间为 MicroMsg.sdk,在使用前先导入此名字空间。

using MicroMsg.sdk;

4.在代码中使用 SDK 开发包

[1] 发送请求或响应到微信

现在,你的程序要发送请求或响应给微信,可以通过 IWXAPI 的 sendReq 和 sendResp 两个函数来实现。

boolean sendReq(BaseReq req);

sendReq 是第三方 app 主动发送请求给微信,发送请求后会拉起微信应用,微信对请求进行处理后,会发送响应回 App。

boolean sendResp(BaseResp resp);

sendResp 场景:微信先向第三方 app 发送请求,拉起第三方 App 界面,当用户操作完成后,第三方 app 通过 sendResp 发送响应数据给微信,拉起微信界面。

sendReq 示例:

try

{

int scene = SendMessageToWX.Req.WXSceneSession; //发给微信朋友`

WXTextMessage message = new WXTextMessage();

message.Title = “文本”;

message.Text = “这是一段文本内容”;

SendMessageToWX.Req req = new SendMessageToWX.Req(message, scene);

IWXAPI api = WXAPIFactory.CreateWXAPI(AppID);

api.SendReq(req);

}

catch (WXException ex)

{

MessageBox.Show(ex.Message);

}

AppID 为你在微信开放平台网站上登记应用得到的 AppID。

需要注意的是,SendMessageToWX.Req 的 scene 参数,如果 scene 填 WXSceneSession,那么消息会发送给微信好友。如果 scene 填 WXSceneTimeline,那么消息会发送至朋友圈。如果 scene 填 WXSceneChooseByUser,那么会由用户来选择发送给好友还是发到朋友圈。scene 默认值为 WXSceneChooseByUser。

sendResp 示例:

try
{
WXTextMessage message = new WXTextMessage();
message.Title = "文本";
message.Text = "这是一段文本内容";
GetMessageFromWX.Resp resp = new GetMessageFromWX.Resp(req.Transaction, req.Username, message);
IWXAPI api = WXAPIFactory.CreateWXAPI(AppID);
api.SendResp(resp);
}
catch (WXException ex)
{
MessageBox.Show(ex.Message);
}

req 为微信向你的应用发送请求时传过来的数据对象。

具体要发送的内容由第三方 app 开发者定义,SDK 支持文本、图片、文件、链接、表情、音乐、视频、自定义等多种消息内容。具体可参考 Demo 源码。

[2] 处理微信的请求和响应

如果你的程序需要接收微信发送的请求和响应,需要下面 4 步操作:a.修改 WMAppManifest.xml

a.修改 WMAppManifest.xml

右键点击应用的 Properties 下的 WMAppManifest.xml,选择 Open with…,然后选择 Xml (Text) Editer 打开该文件。在的前面,加上以下标签代码(如果你的文件中已经存在标签,则添加在已有的标签下)

上面 Xml 片段中有两处需要修改的,一个是 Name=”SDK_DEMO”,改成任意你喜欢的名字,两个支持的 FileType,一个是.wechatapp, 另外一个是.wx3b34a14b66641dfd,其中“wx3b34a14b66641dfd”改成你在微信开放平台上登记应用时得到的 AppID,这个务必要写对,不然微信拉不起你的应用。

b. 编写微信入口 Page 类

继承 WXEntryBasePage 类,并覆写下表中的函数,来处理来自微信的请求和响应,微信发送的数据,已经填到了参数中,可直接取用。注意:如果覆写 OnNavigatedTo 函数,需要调用 base.OnNavigatedTo,以保证父类中的逻辑得以执行。

c. 继承系统的 UriMapperBase 类

大致逻辑如下:

class AssociationUriMapper : UriMapperBase
{
private string tempUri;
public override Uri MapUri(Uri uri)
{
tempUri = uri.ToString();
// 根据文件类型打开程序
if (tempUri.Contains("/FileTypeAssociation"))
{
// 获取fileID (after "fileToken=").
int fileIDIndex = tempUri.IndexOf("fileToken=") + 10;
string fileID = tempUri.Substring(fileIDIndex);
// 获取文件名.string incommingFileName = SharedStorageAccessManager.GetSharedFileName(fileID);
// 获取文件后缀
int extensionIndex = incommingFileName.LastIndexOf('.') + 1;
string incommingFileType = incommingFileName.Substring(extensionIndex).ToLower();
// 根据不同文件类型,跳转不同参数的地址
switch (incommingFileType)
{
case "wx3b34a14b66641dfd":
return new Uri("/DemoEntryPage.xaml?fileToken=" + fileID, UriKind.Relative);
default:
return new Uri("/MainPage.xaml", UriKind.Relative);
}
}
else
{
return uri;
}
}
}

case ‘wx3b34a14b66641dfd’: 改成你的 AppID。

“/DemoEntryPage.xaml?fileToken=” 改成步骤 b 中继承 WXEntryBasePage 的 Page 的路径。

d. 修改 App.xaml.cs 文件

然后在 App.xaml.cs 的 InitializePhoneApplication()函数中,增加一行代码:

// Assign the URI-mapper class to the application frame.

RootFrame.UriMapper = new AssociationUriMapper();

注意:

  1. 在测试的时候,确保你安装的 WP8 的微信(4.0 以上版本)

微信 SDK Sample Demo 源码

微信开放平台Android接入指南

微信开放平台Android接入指南

Android接入指南

注 1:jCenter 服务将在2021年5月1日之后关停,微信 SDK 已迁移到 Maven Central,请开发者及时修改引用仓库。

注 2:微信 SDK 改成通过 Gradle 的方式发布到 Maven Central,包名做了相应修改,从原来的 com.tencent.mm.sdk 修改为 com.tencent.mm.opensdk,需要开发者修改对应的 import 语句。

注 3:接入Open SDK的开发者,请先认真阅读《微信Open SDK个人信息处理规则》并确保对 OpenSDK 的接入使用情况符合上述规则的相关要求。

注 4:本文为微信 Android 终端开发工具的新手使用教程,只涉及教授 SDK 的使用方法,默认读者已经熟悉 IDE 的基本使用方法(Android Studio(推荐) 或 Eclipse),以及具有一定的编程知识基础等。

关于openSDK6.8.0的更新说明

微信将于近期发布 targetSdkVersion 30的客户端版本,因Android11系统特性,该微信版本在Android 11及以上系统版本的设备上运行时,授权登录、分享、微信支付等功能受到影响,可能无法正常使用。为了适配 Android 系统新版本特性,保证微信功能正常使用,请第三方应用2021年11月1日之前进行更新,点击查看更新指引

目录

接入指南

1.申请你的 AppID

请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将该应用提交审核,只有审核通过的应用才能进行开发。

2.下载 SDK 及 API 文档

Android Studio 环境下:

  • 在 build.gradle 文件中,添加如下依赖即可:
dependencies {
    api 'com.tencent.mm.opensdk:wechat-sdk-android:+'
}

(从6.8.0版本开始,请使用 wechat-sdk-android )

  • 由于 jCenter 服务关停,需要修改成引用 Maven Central,在项目的根 build.gradle 文件中,添加如下代码即可:
buildscript {
    repositories {
        jcenter()       // 原有 jCenter 引用可继续保留
        mavenCentral()
    }
}

allprojects {
    repositories {
        jcenter()      // 原有 jCenter 引用可继续保留
        mavenCentral()
    }
}

特别注意,目前 Maven Central仅支持部分版本:6.6.4、6.6.5、6.6.23、6.7.0、6.7.9、6.8.0,建议开发者升级至最新版本6.8.0。后续所有版本更新都会上传至Maven Central。

Eclipse 环境下:

请前往资源下载页下载最新 SDK 包。

3.搭建开发环境

Android Studio 环境下:

在 Android Studio 中新建你的工程,并保证网络设置可以成功从 Maven Central 下载微信 SDK 即可。

Eclipse 环境下:

[1] 在 Eclipse 中建立你的工程。

[2] 在工程中新建一个 libs 目录,将开发工具包中 libs 目录下的 libammsdk.jar 复制到该目录中(如下图所示,建立了一个名为 SDK_Sample 的工程,并把 jar 包复制到 libs 目录下)。

[3] 右键单击工程,选择 Build Path 中的 Configure Build Path…,选中 Libraries 这个 tab,并通过 Add Jars…导入工程 libs 目录下的 libammsdk.jar 文件。(如下图所示)。

在你需要使用微信终端 API 的文件中导入相应的类。

import com.tencent.mm.opensdk.openapi.WXTextObject;

4.在代码中使用开发工具包

[1] 注册到微信

要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的 id。(如下图所示,可以在程序入口 Activity 的 onCreate 回调函数处,或其他合适的地方将你的应用 id 注册到微信。注册函数示例如下图所示。

	// APP_ID 替换为你的应用从官方网站申请到的合法appID
private static final String APP_ID = "wx88888888";

// IWXAPI 是第三方 app 和微信通信的 openApi 接口
private IWXAPI api;

private regToWx() {
    // 通过 WXAPIFactory 工厂,获取 IWXAPI 的实例
    api = WXAPIFactory.createWXAPI(this, APP_ID, true);

    // 将应用的 appId 注册到微信
    api.registerApp(APP_ID);

   //建议动态监听微信启动广播进行注册到微信
  registerReceiver(new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {

     // 将该 app 注册到微信
    api.registerApp(Constants.APP_ID);
   }
  }, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));

}

[2] 发送请求或响应到微信

现在,你的程序要发送请求或发送响应到微信终端,可以通过 IWXAPI 的 sendReq 和 sendResp 两个方法来实现。

boolean sendReq(BaseReq req);

sendReq 是第三方 app 主动发送消息给微信,发送完成之后会切回到第三方 app 界面。

boolean sendResp(BaseResp resp);

sendResp 是微信向第三方 app 请求数据,第三方 app 回应数据之后会切回到微信界面。

sendReq 的实现示例,如下图所示:

//初始化一个 WXTextObject 对象,填写分享的文本内容
WXTextObject textObj = new WXTextObject();
textObj.text = text;

//用 WXTextObject 对象初始化一个 WXMediaMessage 对象
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textObj;
msg.description = text;

SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());  //transaction字段用与唯一标示一个请求
req.message = msg;
req.scene = mTargetScene;

//调用 api 接口,发送数据到微信
api.sendReq(req);

需要注意的是,SendMessageToWX.Req 的 scene 成员,如果 scene 填 WXSceneSession,那么消息会发送至微信的会话内。如果 scene 填 WXSceneTimeline(微信 4.2 以上支持,com.tencent.mm.opensdk.constants.Build.java 里面定义了各个功能支持的版本号,如果需要检查微信版本支持 API 的情况, 可调用 IWXAPI 的 getWXAppSupportAPI 方法,比如,要判断微信是否支持分享到朋友圈功能,可以如下所示进行判断:

if (api.getWXAppSupportAPI() >= Build.TIMELINE_SUPPORTED_SDK_INT) {
    //do share
}

那么消息会发送至朋友圈。scene 默认值为 WXSceneSession。

sendResp 的实现与 SendReq 类似,如下图所示:

// 初始化一个 WXTextObject 对象
WXTextObject textObj = new WXTextObject();
textObj.text = text;

// 用 WXTextObject 对象初始化一个 WXMediaMessage 对象
WXMediaMessage msg = new WXMediaMessage(textObj);
msg.description = text;

// 构造一个Resp
GetMessageFromWX.Resp resp = new GetMessageFromWX.Resp();
// 将 req 的transaction设置到 resp 对象中,其中 bundle 为微信传递过来的 Intent 所带的内容,通过getExtras()方法获取
resp.transaction = new GetMessageFromWX.Req(bundle).transaction;
resp.message = msg;

//调用 api 接口,发送数据到微信
api. sendResp (resp) ;

具体要发送的内容由第三方 app 开发者定义,具体可参考微信开发工具包中的 SDK Sample Demo 源码。

[3] 接收微信的请求及返回值

如果你的程序需要接收微信发送的请求,或者接收发送到微信请求的响应结果,需要下面 3 步操作:

a. 在你的包名相应目录下新建一个 wxapi 目录,并在该 wxapi 目录下新增一个 WXEntryActivity 类,该类继承自 Activity(例如应用程序的包名为 net.sourceforge.simcpux,则新添加的类如下图所示)

并在 manifest 文件里面加上exported、taskAffinity及 launchMode 属性,其中 exported 设置为true,taskAffinity设置为你的包名,launchMode设置为singleTask,例如:

<activity
    android:name=".wxapi.WXEntryActivity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:exported="true"
    android:taskAffinity="填写你的包名"
    android:launchMode="singleTask">
</activity>

b. 实现 IWXAPIEventHandler 接口,微信发送的请求将回调到 onReq 方法,发送到微信请求的响应结果将回调到 onResp 方法

c. 在 WXEntryActivity 中将接收到的 intent 及实现了 IWXAPIEventHandler 接口的对象传递给 IWXAPI 接口的 handleIntent 方法,示例如下图:

api.handleIntent(getIntent(), this);


当微信发送请求到你的应用,将通过 IWXAPIEventHandler 接口的 onReq 方法进行回调,类似的,应用请求微信的响应结果将通过 onResp 回调。

注意事项

[1]如果需要混淆代码,为了保证 sdk 的正常使用,需要在 proguard.cfg 加上下面两行配置:

-keep class com.tencent.mm.opensdk.** {
    *;
}

-keep class com.tencent.wxop.** {
    *;
}

-keep class com.tencent.mm.sdk.** {
    *;
}

[2]如果需要运行 SDK Sample 工程,需要通过指定的 debug.keystore 来进行签名:

Android Studio 环境下:

signingConfigs {
    debug {
        storeFile file("../debug.keystore")
    }
}

Eclipse 环境下:

请查阅文档《如何运行 SDK Demo 工程 》

至此,你已经能使用微信 Android 开发工具包的 API 内容了。如果想更详细了解每个 API 函数的用法,请查阅 Android 平台参考手册 或自行下载阅读微信 SDK Sample Demo 源码。

前往下载微信 SDK 示例代码

Android 11-更新 openSDK 适配

针对微信 targetSdkVersion 30的客户端版本,因Android11系统特性,该微信版本在Android 11及以上系统版本的设备上运行时,授权登录、分享、微信支付等功能受到影响,可能无法正常使用。为了适配 Android 系统新版本特性,保证微信功能正常使用,请第三方应用2021年11月1日之前进行如下更新:

适配方案

  1. 第三方应用需要更新微信 Android SDK至6.8.0版本,引用代码如下:
dependencies {
    api 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0'
    // 或者直接引用最新版本
    // api 'com.tencent.mm.opensdk:wechat-sdk-android:+'
}

无论第三方应用 targetSdkVersion 是否升级为30,均需要进行微信 Android SDK版本升级适配。

  1. targetSdkVersion升级到30的第三方应用,由于Android 11 软件包可见性 特性的影响,OpenSDK的接口可能无法正常拉起微信,从而无法使用微信的部分功能,需要在主工程的AndroidManifest.xml 中增加标签,代码如下:
<manifest package="com.example.app">

      ...

      // 在应用的 AndroidManifest.xml 添加如下<queries>标签
    <queries>
        <package android:name="com.tencent.mm" />   // 指定微信包名
    </queries>

      ...

</manifest>

注:添加以上标签之后,需要开发者升级编译工具,否则会出现编译错误。

  • Android Studio 需要升级至 3.3 及以上,建议升级至 4.0 及以上版本
  • Android SDK Build-Tools 需要升级至 30 及以上版本
  • com.android.tools.build:gradle 需要升级至 3.6.0 版本及以上

验证流程

  1. 环境准备:
  2. 验证流程:

(1) 安装第三方应用后,首次触发微信登录功能。(注:该操作前务必不要触发任何分享、跳转等 openSDK 功能)

(2) 若成功完成微信登录功能,即验证 openSDK 更新成功。

(2) 若签名验证失败,收到回调errcode=-6,则需开发者重新检查步骤1和2是否完成。

targetSdkVersion升级到30的第三方应用,具体适配详情另可参考文档Android 11 系统策略更新,请开发者及时适配

微信开放平台iOS接入指南

微信开放平台iOS接入指南

iOS接入指南

注 1:接入Open SDK的开发者,请先认真阅读《微信Open SDK个人信息处理规则》并确保对 OpenSDK 的接入使用情况符合上述规则的相关要求。

关于openSDK1.8.6及以上版本的更新说明

由于苹果iOS 13系统版本安全升级,为此 openSDK 在1.8.6及以上版本进行了适配。 1.8.6及以上版本支持Universal Links方式跳转,对 openSDK 分享进行合法性校验。

*建议开发者接入新版本 SDK , 覆盖测试微信7.0.7或以上版本、iOS12或13,以验证所使用的接口的功能性和可用性。

目录

SDK接入成功验证指引

环境

SDK版本: SDK1.8.6或以上
微信版本: 7.0.7或以上
系统版本: iOS12或以上

1.确认微信的Universal Links正常

首先,确认微信(7.0.7或以上版本)的Universal Links在设备上正常,以确保 openSDK 与微信双向使用Universal Links通信

Safari输入

https://help.wechat.com/app/  

下拉查看是否有打开微信入口(如下图)。若无入口,可能是由于系统拉取微信Universal Links失败,请检查手机网络状态是否正常,或更新/重装微信

2.确认 App 的Universal Links配置成功

微信使用第三方 App 的Universal Links唤起第三方 App 时,会在Universal Links末尾拼接路径和参数,因此开发者Universal Links配置必须加上通配符,并测试Universal Links拼接字符串能否唤起app

建议Universal Links配置path,例如/app/*, 避免全域命中Universal Links跳转

以SDK Sample配置为例:

{ "appID": "teamID.com.tencent.xin.SDKSample", "paths": ["/sdksample/*"] }

测试配置是否成功:
1) Safari输入Universal Links(包括完整路径)+随机字符串(例如: abc)
SDK Sample的Universal Links:

https://help.wechat.com/sdksample/  

测试输入 Safari 的Universal Links:

https://help.wechat.com/sdksample/abc

2)下拉页面检查是否有打开 app 的入口提示(如下图)

3.连续发起分享,确认不会发生多次二次跳转行为

当用户首次使用新版本 SDK 发起分享时,将会出现如下交互流程:从 App 拉起微信 – 出现“正在连接”页面 – 返回 App- 重新打开微信。以上是新的安全验证流程,每个用户在首次使用时会出现上述跳转。(如同一用户多次使用分享都出现跳转,请按照以下接入指引,检查Universal Links配置)

4.如 App 有使用微信授权登录功能,确认授权不出现二次确认弹窗

授权登录如出现以下二次确认弹窗,原因是微信无法通过 App 提供的Universal Links返回导致,很可能是 App 的Universal Links不生效,请按照接入指引检查Universal Links配置

SDK接入指引

*请注意红字部分配置

1)根据 苹果文档 配置你应用的Universal Links
微信对Universal Links配置要求
a)Universal Links必须支持https
b)Universal Links配置的 paths 不能带 query 参数
c)微信使用Universal Links拉起第三方 App 时,会在Universal Links末尾拼接路径和参数,因此 App 配置的 paths 必须加上通配符/*
示例:

{ 
"appID": "8P7343TG54.com.tencent.xin.SDKSample",    
"paths": ["/sdksample/*"]
}

2)打开Associated Domains开关,将Universal Links域名加到配置上

3)检查确认 App 的Universal Links配置成功,通过上述SDK接入成功验证指引操作

请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。

3.下载微信终端 SDK 文件

SDK 文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个。 如选用手动集成,请前往资源下载页下载最新 SDK 包

4.搭建开发环境

4.1 通过 CocoaPods 集成

[1] 在 XCode 中建立你的工程。

[2]  在工程的 Podfile 里面添加以下代码:

pod 'WechatOpenSDK'

保存并执行 pod install,然后用后缀为.xcworkspace 的文件打开工程。

注意:

命令行下执行 pod search WechatOpenSDK,如显示的 WechatOpenSDK 版本不是最新的,则先执行 pod repo update 操作更新本地 repo 的内容

关于 CocoaPods 的更多信息请查看 CocoaPods 官方网站 。

[3] 在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序 id(如下图所示)。 

Xcode 设置 URL scheme

[4] 在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin、weixinULAPI、weixinURLParamsAPI(如下图所示)。

经验证,在iOS 15系统上,使用Xcode 13编译出的App,LSApplicationQueriesSchemes的数量会限制为50个。第50个之后的 scheme 配置会不生效,需要确保”weixin”、”weixinULAPI”和”weixinURLParamsAPI”配置在 LSApplicationQueriesSchemes 的前50个。

[5] 在你需要使 用微信终端 API 的文件中 import WXApi.h 头文件,并增加 WXApiDelegate 协议。

#import <UIKit/UIKit.h>
#import "WXApi.h"

@interface AppDelegate : UIResponder<UIApplicationDelegate, WXApiDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

3.2 手动集成

[1] 在 XCode 中建立你的工程。

[2] 将 SDK 文件中包含的 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个文件添加到你所建的工程中(如下图所示,建立了一个名为 Test 的工程,并把以上三个文件添加到 Test 文件夹下)。

(注:请使用 xCode4.5 及以上版本)

[3]开发者需要在工程中链接上:Security.framework, CoreGraphics.framework, WebKit.framework

[4] 在你的工程文件中选择 Build Setting,在”Other Linker Flags”中加入”-ObjC -all_load”,在 Search Paths 中添加 libWeChatSDK.a ,WXApi.h,WXApiObject.h,文件所在位置(如下图所示)。

(注:请使用 xCode4.5 及以上版本) 

[5] 在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序 id(如下图所示)。

Xcode 设置 URL scheme

[6] 在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes”添加weixin、weixinULAPI、weixinURLParamsAPI(如下图所示)。

经验证,在iOS 15系统上,使用Xcode 13编译出的App,LSApplicationQueriesSchemes的数量会限制为50个。第50个之后的 scheme 配置会不生效,需要确保”weixin”、”weixinULAPI”和”weixinURLParamsAPI”配置在 LSApplicationQueriesSchemes 的前50个。

[7] 在你需要使 用微信终端 API 的文件中 import WXApi.h 头文件,并增加 WXApiDelegate 协议。

#import <UIKit/UIKit.h>
#import "WXApi.h"

@interface AppDelegate : UIResponder<UIApplicationDelegate, WXApiDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

5.在代码中使用开发工具包

[1] 要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的 id。(如下图所示,在 AppDelegate 的 didFinishLaunchingWithOptions 函数中向微信注册 id)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //向微信注册
    [WXApi registerApp:APP_ID
universalLink:UNIVERSAL_LINK];
    return YES;
}

[2] 重写 AppDelegate 的 handleOpenURL 和 openURL 方法:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return  [WXApi handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [WXApi handleOpenURL:url delegate:self];
}

[3] 重写 AppDelegate 或SceneDelegate的 continueUserActivity 方法: 注意:适配了 SceneDelegate 的App,系统将会回调 SceneDelegate 的continueUserActivity方法,所以需要重写 SceneDelegate 的该方法。

AppDelegate:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRest
oring>> * __nullable restorableObjects))restorationHandler {
    return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}

SceneDelegate:

- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity {
    [WXApi handleOpenUniversalLink:userActivity delegate:self];
}

[4] 现在,你的程序要实现和微信终端交互的具体请求与回应,因此需要实现 WXApiDelegate 协议的两个方法:

-(void) onReq:(BaseReq*)reqonReq

是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用 sendRsp 返回。在调用 sendRsp 返回时,会切回到微信终端程序界面。

-(void) onResp:(BaseResp*)resp

如果第三方程序向微信发送了 sendReq 的请求,那么 onResp 会被回调。sendReq 请求调用后,会切到微信终端程序界面。

具体在此两方法中所要完成的内容由你定义,具体可参考微信开发工具包中的 SDK Sample Demo 源码。

[5] 如果你的程序要发消息给微信,那么需要调用 WXApi 的 sendReq 函数:

+ (void)sendReq:(BaseReq *)req completion:(void (^
__nullable)(BOOL success))completion;

其中 req 参数为 SendMessageToWXReq 类型。

需要注意的是,SendMessageToWXReq 的 scene 成员,如果 scene 填 WXSceneSession,那么消息会发送至微信的会话内。如果 scene 填 WXSceneTimeline,那么消息会发送至朋友圈。如果 scene 填 WXSceneFavorite,那么消息会发送到“我的收藏”中。scene 默认值为 WXSceneSession。

至此,你已经能使用微信终端 SDK 的 API 内容了。如果想更详细了解每个 API 函数的用法,请查阅官网 API 文档或自行下载阅读微信 SDK Sample Demo 源码

使用SDK 自检函数排查接入问题

SDK1.8.7版本,WXApi新增了自检函数checkUniversalLinkReady:,帮助开发者排查 SDK 接入过程中遇到的问题。

注意事项:

  1. 调用自检函数之前必须要先调用registerApp:universalLink接口, 并确认调用成功
  2. 自检过程中会有 Log 产生,可以先调用 startLogByLevel 函数,根据 Log 排查问题
  3. 会多次回调block
  4. 仅用于新接入 SDK 时调试使用,请勿在正式环境的调用

示例代码:

//在 register 之前打开 log , 后续可以根据 log 排查问题
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
    NSLog(@"WeChatSDK: %@", log);
}];

//务必在调用自检函数前注册
[WXApi registerApp:APP_ID universalLink:UNIVERSAL_LINK];

//调用自检函数
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {
    NSLog(@"%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
}];

WXULCheckStep值说明:

  1. step = WXULCheckStepParams: 参数检查
  2. step = WXULCheckStepSystemVersion: 当前系统版本检查
  3. step = WXULCheckStepWechatVersion: 微信客户端版本检查
  4. step = WXULCheckStepSDKInnerOperation: 微信 SDK 内部操作检查
  5. step = WXULCheckStepLaunchWechat: App拉起微信检查
  6. step = WXULCheckStepBackToCurrentApp: 由微信返回当前 App 检查
  7. step = WXULCheckStepFinal: 最终检查

会依次回调这7个step,当回调了WXULCheckStepFinal,说明检测通过,SDK接入成功。 任一 step 回调的result.success为 NO , 流程终止,后续不再回调,可以根据result.errorInfo的查看当前步骤错误的原因,根据result.suggestion修复问题.

微信开放平台应用《微信开放平台网站信息登记表》填写规范

微信开放平台应用《微信开放平台网站信息登记表》填写规范

应用《微信开放平台网站信息登记表》

8.1 你所提交的《微信开放平台网站信息登记表》里的应用内容需与微信开放平台内应用基本信息保持一致。

驳回示例:微信开放平台应用名称为“书轩”,《微信开放平台网站信息登记表》中填写的应用名称为“二轩”,与平台应用名称无关。

8.2 《微信开放平台网站信息登记表》公章需与登记表内主办单位/微信开放平台认证主体一致。

8.3 《微信开放平台网站信息登记表》备案属港澳/海外主体无公章的,可用有权人手写签名替代。

8.4 《微信开放平台网站信息登记表》内的公司公章需清晰且规范,暂不支持合同章等其他章。

8.5 《微信开放平台网站信息登记表》备案需与登记表内主办单位一致。

8.6 《微信开放平台网站信息登记表》中的备案号需填写规范,正确的备案号格式示例:粤 ICP 备XXX号/粤 ICP 备XXX号-1。

微信开放平台特别应用审核规范

微信开放平台特别应用审核规范

特别应用

7.1 游戏应用

7.1.1 你所提交的应用若属于游戏应用且应用已在应用市场上架,可在提审基本信息页面的流程图处附上相关<网络游戏出版物号>等材料以供审核。若游戏出版单位和微信开放平台帐号认证主体不一致,建议一并补充版权方与微信开放平台帐号主体方的授权文件,授权书需加盖双方公章,且至少一方公章为鲜章。如以上材料无法提供,建议用户申请应用时在应用已上架处勾选否。

7.2 企业内部使用应用

7.2.1 你所申请的应用仅限企业内部使用,提交应用申请时主体信息需先通过微信开放平台主体认证,且在申请/修改应用说明处说明“该应用是只限内部使用,不做他用”。

7.2.2 你所申请的应用仅限企业内部使用,需上传能够清晰说明只限内部使用的应用行流程图,或提交该应用仅限内部使用的盖章说明。

7.2.3 你所申请的应用仅限企业内部使用且在应用已上架处勾选是,可在已上架应用下载链接处提交微信开放平台帐号主体下其他应用下载链接;若在应用已上架处勾选否,可提供与微信开放平台帐号主体一致的企业网站。

微信开放平台应用流程图审核规范

微信开放平台应用流程图审核规范

应用流程图

6.1 你在新增申请应用或修改应用时,如申请的应用已在应用市场上架,APP运行流程图处可直接提交相关 APP 运行截图,并提供相关应用商店的应用下载链接;如申请的应用未在应用市场上架,可提交相关交互设计图或者运行流程逻辑图等说明 APP 运行逻辑流程。

6.2 你所提供的流程图内容需与应用名称/应用图标/官网的内容一致。

6.3 你所提供的运行流程逻辑图应是规范的 APP 流程图或者交互设计图,不得上传图标或小程序、公众号、网站等其他平台的截图。

驳回示例:提供的运行流程图属于小程序截图,不是应用 APP 截图。

6.4 你所提供的流程图应呈现较多应用具体信息,建议流程图中 APP 运行截图包含有时间、电量等内容的状态栏来校验应用的真实性、安全性和统一性。

驳回示例:流程图的截图没有包含时间、电量等信息的状态栏,属于不规范截图。

微信开放平台应用市场下载链接审核规范

微信开放平台应用市场下载链接审核规范

应用市场下载链接

5.1你在新增申请应用或修改应用时,如申请的应用已在应用市场上架,可在应用已上架处勾选是,并提供可访问的有效应用商店下载链接。

5.2 如你的应用已在应用市场上架,提交应用申请时微信开放平台帐号主体信息需先通过认证。

5.3 你所提交的应用市场下载链接需包含与微信开放平台应用名称、图标、主体信息、APP流程图内容一致的信息来校验应用的真实性、安全性和统一性。

驳回示例:应用市场下载链接内应用名称为巨兽**,在开放平台创建的应用名称为猛兽**,名称不一致。

5.4 你所提交的应用市场下载链接应是应用宝、App Store、谷歌商店、小米、华为、vivo等应用商城的下载链接,apk下载链接、非应用商店的、无法正常打开的以及无相关下载按钮的链接均属于不规范。

驳回示例1: 应用市场下载链接无应用开发商信息。

驳回示例2:应用市场下载链接无应用相关信息。

驳回示例3:应用市场下载链接无法访问。

微信开放平台应用官网审核规范

微信开放平台应用官网审核规范

应用官网

4.1 你可提供支持访问的应用官网或企业网站以供审核,官网内容需规范,包括应用提供的服务功能详情、用户协议、版权所有者、网站备案信息、联系方式等,官网不支持提供手机端小程序、公众号和H5等页面类型。 驳回示例:提供的官网为H5页面类型。

4.2 你所提供的官网不得是无法访问应用详细信息的登录界面,如网站需登录后才可访问,建议提供相关帐号密码以供审核人员登录并查看相关信息。

驳回示例:提供的官网打开是登录界面,无法访问应用相关详细信息。

4.3 你所提交的网站内容、排版等需符合常规网站要求,不支持只有几行文字,或者仅是一张或几张图片的,又或者是文档形式的网站内容。

驳回示例:提供的官网内容仅是一张图片,无应用相关详细信息。 

4.4 你所提交官网需有应用名称字眼及其应用介绍、应用图片、应用提供的服务功能详情等内容,如没有,建议调整网站内容补充更多应用详情内容或修改名称重新提审。

驳回示例:应用注册名称为“周末市集”,官网导航栏展示名称为“周末漫画“,与应用名称无关。

4.5 你所提交的官网开发者信息,需要与微信开放平台开发者资质认证主体信息一致,如不一致,提交时需提供相关授权书(加盖双方公章) 以供审核。

驳回示例:官网内主体信息展示为上海 xx 科技有限公司,微信开放平台帐号认证主体名称为佛山 xx 科技有限公司。

微信开放平台应用类目审核规范

微信开放平台应用类目审核规范

3.1 你所申请的应用服务范围需与实际填写的类目一致,也需与自身所提供的服务一致。

驳回示例:应用提供的服务是商业服务,实际经营内容为商业服务 – 会展服务,选择类目是体育 – 体育培训,审核将不会通过。

3.2 你在申请或变更应用前需先自行添加和应用匹配的类目,再发起应用的申请和变更。选择类目流程指引:微信开放平台后台->管理中心->应用类目->添加应用类目。

3.3 如现有类目跟应用不匹配的,可删除现有类目,删除现有类目不会影响之前关联其删除类目的应用。

3.4 服务类目有分个人类目与非个人类目。部分类目需你在微信开放平台帐号中心完成开发者资质认证后才可选择。

微信开放平台应用主体应用审核规范

微信开放平台应用主体应用审核规范

2.1 你所提交的官网主体信息或者应用市场下载链接开发者信息,需与微信开放平台认证主体信息一致,如不一致,可在提审基本信息页面的流程图处附上授权书,授权书可自行拟定,需说明清楚授权关系、授权内容,并加盖双方公司公章,个人主体则签名即可。

2.2 个人开发者如需要申请已上架应用,但是未认证微信开放平台帐号主体信息,可在提审基本信息页面的流程图处附上软件著作权证书以及手持身份证照片,软著的著作权人、身份证信息、应用市场下载链接开发者信息需与微信开放平台帐号主体信息保持一致。

微信开放平台应用基本信息审核规范

微信开放平台应用基本信息审核规范

一、应用基本信息

1.1 应用名称

1.1.1 应用名称需保证具有唯一识别性和客观性。

1.1.2 应用名称中只允许字母间出现一个空格。

驳回示例:应用名称含有两个空格,举例:ad m in12

1.1.3 应用名称不得超过10个中文字符或20个英文字符 ,不得含有特殊字符。

驳回示例:应用名称中含有特殊字符,举例:周末#市集&

1.1.4 应用名称不得包含广告性质的口号、标语等营销推广内容。

驳回示例:应用名称中含有营销推广意义的词,举例:**赚、**分享

1.1.5 同一应用在不同平台的版本应共用一个AppID,应用名称中不得出现平台相关字样。

驳回示例:应用名称中含有平台相关字样,举例:周末市集 Android 版。

1.1.6 应用名称不得出现测试相关字样。

驳回示例:应用名称中含有测试字样,举例:周末市集测试、周末市集test。

1.1.7 应用名称不得包含有微信、腾讯、小程序、公众号等商标名称和小米、百度、360、魅族、vivo等品牌字样。

驳回示例:应用名称中含有品牌字样,举例:VIVO周末市集。

1.1.8 应用与微信开放平台已有应用名称重复的,无法提交应用创建申请。比如名称与政府机关、官方机构、组织、职业、网站、媒体、赛事名称等产生混淆的,容易造成用户误认或混淆,且无相关资质或授权的。

1.2 应用图标

1.2.1 应用图标必须清晰,不能含有其它水印信息。应用图标清晰度不够时,不予通过。

1.2.2 应用图标应与应用名称保持一致。

驳回示例:应用图标和应用名称无关联,如应用名称为周末市集,应用图标为视频图标。

1.2.3 应用图标不得包含腾讯、微信等官方品牌标识。

微信开放平台支持接入如下类型的第三方应用

开放平台支持接入如下类型的第三方应用:

1.移动应用

2.网站应用

补充,WeDemo 开源项目(微信登录、微信分享等功能示例,包括客户端(iOS)及后台源代码,开发者可参考源代码完成开发,安全、便捷地在 App 中实现微信登录、分享等功能。查看WeDemo 开源项目 )

应用授权代理APP上架应用商店资质?应用授权代理APP上架要求?

应用授权代理APP上架应用商店资质?应用授权代理APP上架要求?

以下三者缺一不可

A.授权者营业执照

B.代理商营业执照

C.推广授权协议、代理合同、知识产权转让协议三者中的任意一种,需提供扫描件或是加盖公章的复印件,协议内容需包含应用名称、包名、被授权企业名称等

资讯类APP上架应用商店要求?资讯类APP上架应用商店资质?

资讯类APP上架应用商店要求?资讯类APP上架应用商店资质?

1.企业官网截图或产品官网 ICP 备案截图(查询地址: http://www.beian.miit.gov.cn/publish/query/indexFirst.action,搜索官网后截图上传)

2.软件著作权证明

购物类APP上架应用商店资质?购物类APP上架应用商店要求?

购物类APP上架应用商店资质?购物类APP上架应用商店要求?

1.企业官网截图或产品官网 ICP 备案截图(查询地址: http://www.beian.miit.gov.cn/publish/query/indexFirst.action,搜索官网后截图上传)

2.软件著作权证明

交友类(包含即时通讯与社交网络)APP上架应用商店资质交友类(包含即时通讯与社交网络)APP上架应用商店要求?

交友类(包含即时通讯与社交网络)APP上架应用商店资质交友类(包含即时通讯与社交网络)APP上架应用商店要求?

1.企业官网截图或产品官网 ICP 备案截图(查询地址: http://www.beian.miit.gov.cn/publish/query/indexFirst.action,搜索官网后截图上传)

2.软件著作权证明

3.《安全评估报告》和承诺书,查看详情 https://open.flyme.cn/docs?id=124

医疗类APP上架应用商店资质?医疗类APP上架应用商店要求?

医疗类APP上架应用商店资质?医疗类APP上架应用商店要求?

1.企业官网截图或产品官网 ICP 备案截图(查询地址: http://www.beian.miit.gov.cn/publish/query/indexFirst.action,搜索官网后截图上传)

2.软件著作权证明

3.《公共航空运输企业经营许可证》

4.医疗类软件如医药信息、买卖药品、医生咨询、医生预约等必须提供相应资质:

《医疗机构执业许可证》(医疗服务)

《互联网医疗保健信息服务许可证》或ICP证(医疗保健信息)

《移动网药品信息服务资格证书》、《互联网药品交易服务机构资格证书》(药品信息、买卖药品)

《中华人民共和国医疗器械经营企业许可证》或《中华人民共和国医疗器械生产企业许可证》(医疗器械)

与医院的合作协议或(5-8位)医生从业资格许可(接入医院或医生在线提供医疗服务)

机票销售类APP上架应用商店资质?机票销售类APP上架要求

机票销售类APP上架应用商店资质?机票销售类APP上架要求

1.企业官网截图或产品官网 ICP 备案截图(查询地址: http://www.beian.miit.gov.cn/publish/query/indexFirst.action,搜索官网后截图上传)

2.软件著作权证明

3.《公共航空运输企业经营许可证》

4.《中国民用航空运输销售代理业务资格认证书》