运营 SDK 内部补充接口


游戏盒跳转

游戏盒首页

/*
 * 打开游戏盒主页面
 *
 * @param activity Activity 实例
 */
public void startGameBox(Activity activity)

游戏详情

/*
 * 打开游戏盒详情页,若没有下载游戏盒则提示下载
 *
 * @param activity Activity对象
 */
public void showGameDetail(Activity activity);

活动详情

/*
 * 打开游戏盒活动详情,若没有下载游戏盒则提示下载
 *
 * @param activity    Activity 实例
 * @param activityId  活动id
 * @param activityUrl 活动Url
 */
public void showActivityDetail(Activity activity, int activityId, String activityUrl);

礼包中心

/*
 * 打开游戏盒礼包中心,若没有下载游戏盒则提示下载
 *
 * @param activity Activity 实例
 */
public void showGift(Activity activity);

优惠券中心

/*
 * 打开游戏盒优惠券中心,若没有下载游戏盒则提示下载
 *
 * @param activity Activity 实例
 */
public void showCoupon(Activity activity);

论坛

/*
 * 打开游戏盒该游戏的游戏圈页面
 * 若未安装游戏盒,则出现提示下载游戏盒的弹窗
 */
public void showGameForum(Activity activity);

论坛帖子详情

/*
 * 打开游戏盒论坛(游戏圈)指定帖子,若没有游戏圈toast提示用户,若没有下载游戏盒则提示下载
 *
 * @param activity Activity 实例
 * @param id       帖子id
 */
public void showGameForumDetail(Activity activity, int id)

游戏评论

/*
 * 打开游戏盒该游戏的评论页面
 * 若未安装游戏盒,则出现提示下载游戏盒的弹窗
 */
public void showGameCommentArea(Activity activity);

违规举报

此接口要求 SDK 版本不低于 2.37.0,提供游戏内快速举报违规言论功能。

功能概要

违规举报

接口调用

/**
 *
 * 游戏内举报接口
 *
 * 举报游戏内违规内容,举报结果由 SDK 内部提示
 *
 * @param activity Activity 实例
 * @param violation 违规信息,各字段必须且名称固定如下,若确实没有可留空,但不能不传
 *                  <pre><code>
 *                      Map<String, String> violation = new HashMap<String, String>();
 *                      violation.put("g_uid", "被举报人uid");
 *                      violation.put("g_tid", "聊天频道ID");
 *                      violation.put("g_sid", "服务器ID");
 *                      violation.put("g_rid", "角色ID");
 *                      violation.put("g_role", "角色名称");
 *                      violation.put("g_gname", "公会名");
 *                      violation.put("g_cname", "宠物名");
 *                      violation.put("g_content", "聊天内容");
 *                      violation.put("contact", "联系方式 电话、QQ");
 *                  <code/>
 *                  <pre/>
 */
public void reportViolation(Activity activity, Map<String, String> violation);
Map<String, String> violation = new HashMap<>();
violation.put("g_uid", "被举报人uid");
violation.put("g_tid", "聊天频道ID");
violation.put("g_sid", "服务器ID");
violation.put("g_rid", "角色ID" + r);
violation.put("g_content", "聊天内容");
violation.put("g_role", "角色名称");
violation.put("g_gname", "公会名");
violation.put("g_cname", "宠物名");
violation.put("contact", "联系方式 电话、QQ");
mOpeCenter.reportViolation(MainActivity.this, violation);

银联微信充值回调接入

SDK 3.3.1 新接入银联微信渠道,充值过程中通过微信小程序与第三方对接,但支付完成后不能可靠回到游戏内。
若游戏有微信 appId,并接入微信回调,支付后通过小程序可以直接回到游戏内,体验更好。

以下说明如何接入微信回调

接入准备

以上流程可以咨询相关运营

引入微信OpenSDK

dependencies {
    // 如果接入方已有,可忽略
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0'
}

以下假设游戏包名为cn.m4399.operate.samples

实现回调 Activity

区分游戏是否已有WXEntryActivity两种情况,当有时,称为已有微信回调,反之为 无微信回调

新建cn.m4399.operate.samples.wxapi.WXEntryActivity类,将以下代码填充进此类, 并以实际的微信的 appId 填充WECHAT_APP_ID

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
  // REPLACE:使用真实微信appId,它与包名、签名md5是对应的
  public static final String WECHAT_APP_ID = WECHAT_APP_ID;

  private IWXAPI api;

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

    api = WXAPIFactory.createWXAPI(this, WECHAT_APP_ID, false);
    try {
      Intent intent = getIntent();
      api.handleIntent(intent, this);
    } catch (Exception e) {
      Log.e("[OPERATE]", getClass().getName() + " onCreate but error: " + e.getMessage());
      e.printStackTrace();
    }
  }

  @Override
  public void onReq(BaseReq baseReq) {

  }

  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    api.handleIntent(intent, this);
  }

  @Override
  public void onResp(BaseResp resp) {
    // 4399 运营SDK:收到来自于充值的消息,finish 此 Activity 
    WXLaunchMiniProgram.Resp r = (WXLaunchMiniProgram.Resp) resp;
    Log.e("[OPERATE]",
            String.format("Receive wx message, extMsg:%s, openId:%s", r.extMsg, r.openId));
    if (!TextUtils.isEmpty(r.extMsg) && r.extMsg.contains("from=recharge"))
      finish();
  }
}

注册回调 Activity

在游戏Activity注册新加的类,并且将android:taskAffinity="cn.m4399.operate.samples"中的包名
替换为游戏实际包名
(已注册过可忽略)

<!-- 注意:替换 android:taskAffinity="cn.m4399.operate.samples"-->
<activity
        android:name=".wxapi.WXEntryActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:exported="true"
        android:taskAffinity="cn.m4399.operate.samples"
        android:launchMode="singleTask">
</activity>