测试案例

案例ID 测试内容 测试步骤 预期结果 问题及解决方案
AT01 推荐位集成 按SDK集成步骤集成完后,打开APP集成推荐位页面,查看推荐位数据是否正常加载 推荐位数据正常加载 QA01
QA02
AT02 SDK集成 APP未登录,推荐位,点击“芒果TV”,应跳转至APP登录页 跳转至APP登录页 QA03
AT03 SDK集成 SDK应可以正常跳转至微信及正常回调 跳转微信正常,回调正常 QA04
AT04 SDK集成 推荐位,点击更多,进入后点击导航栏右上角设置按钮 应正常跳转 QA05

问题及解决方案

QA01 SDK初始化异常

运行APP后,安卓logcat筛选“mpweex”日志,检查SDK算法库是否初始化成功,成功会输出以下日志

mpweex  : txmcore inited: true

如果初始化为false,则检查mpweex.bmp是否正确替换,检查APP数字签名是否使用APP release的密钥JKS文件,因为SDK会检查APP的数字签名。

QA02 推荐位有数据,但图片未显示

SDK默认未提供图片加载库,需要APP自己实现,因为不同APP使用的图片加载库不一致,SDK无法做到完全统一,故需要APP实现IWXImgLoaderAdapter适配器,iOS实现WXImgLoaderProtocol协议。

参见:
Android扩展图片加载

iOS扩展图片加载

QA03 未实现IWXUserInfoAdapter适配器

SDK应实现IWXUserInfoAdapter适配器,因为小程序有的游客可以访问,有的必须是用户登录后才可以使用,此时SDK会通过IWXUserInfoAdapter适配器进行登录状态判断。

测试要点1:APP未登录,推荐位,点击“芒果TV”,如果实现了适配器判断用户未登录应跳转APP登录界面或弹toast提示用户先登录。

测试要点2:APP未登录,推荐位,点击“围住猫咪”,实现了适配器及未实现适配器,均应可正常打开小程序。

QA04 未正确处理微信回调

测试要点:APP已登录,推荐位->更多,找到新品速递,找到“支付示例”小程序,打开后点击支付测试->去支付->微信支付,拉起微信后,不支付关闭对话框,点击返回商户,应正常返回APP。

解决方案一: 已有回调类
配置或修改微信回调,注意不是WXPayEntryActivity
App包名.wxapi.WXEntryActivity
在onCreate中增加以下代码

public class WXEntryActivity extends WXCallbackActivity {
    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

++        Bundle wxBundle = getIntent().getExtras();
++        if(wxBundle != null) {
++            int commandType = wxBundle.getInt("_wxapi_command_type", 0);
++            if (commandType == 19) {
++                // 拉起微信小程序
++                finish();
++            }
++        }

AndroidManifest.xml:确保配置了taskAffinitylaunchMode

<activity android:name=".wxapi.WXEntryActivity"
        android:theme="...your theme"
+        android:exported="true"
+        android:taskAffinity="APP包名"
+        android:launchMode="singleTask"/>

解决方案二:
如果没有对应的回调类,则新增一个:App包名.wxapi.WXEntryActivity

public class WXEntryActivity extends AppCompatActivity {
    private static final String TAG = "WXEntryActivity";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ignore callback.
        finish();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.e(TAG, "onActivityResult");
    }

    @Override
    protected void onNewIntent(Intent intent) {
        Log.e(TAG, "onNewIntent");
        super.onNewIntent(intent);
        setIntent(intent);
    }
}

AndroidManifest.xml配置如下:

<activity android:name=".wxapi.WXEntryActivity"
        android:theme="@style/mpweexAppTheme.Fullscreen"
        android:exported="true"
        android:taskAffinity="APP包名"
        android:launchMode="singleTask"/>

QA05 未正确完成登录信息同步

测试要点:推荐位-> 更多,未显示最近使用,导航栏右侧设置按钮点击提示“请先登录”,则判断未完成登录信息同步

APP未完成集成文档中登录信息同步章节的内容。即APP在启动时,需要调用SDK的syncAccount方法,告之SDK用户的登录状态。同时APP在退出登录时,需要调用SDK的onLogout方法,告诉SDK用户已退出登录。

注意调用时机

onLogin:APP每次启动成功,并且用户已登录,即可调用,可多次调用,SDK内部会自行判断。
onLogout:APP用户退出登录时。

参见:
Android登录信息同步

iOS登录信息同步