supersdk

文档中心

文档中心

下载文档

WePush 推送模块


推送模块提供了远程推送和本地通知的功能。

注意一:Android 目前支持谷歌推送。

注意二:请在接入前,删除原游戏中已经添加的第三方推送 SDK 和相关 API 接口,防止发生冲突和闪退情况。

一、接入前准备

说明:游戏需要先找 SuperSDK 对外接口人开通该功能,申请 WePush 参数(江流儿:yuhc@yoozoo.com 二二:hanlj@yoozoo.com)。

注意:Android 需要进行如下操作。

1. 下载推送模块资源

2. 导入资源,将 module-push.jar 导入到游戏工程的libs目录下(与 supersdk.jar 同目录)。

二、注册推送接口(必接)

接口描述:注册推送服务,在初始化完成后调用。

接口调用:

Dictionary<string, object> paramsDic = new Dictionary<string, object>();
paramsDic.Add("showType","1"); // 必传,显示类型,0:表示应用在前台也需要弹出通知,1:表示应用在前台不需要弹出通知
paramsDic.Add("lang","zh"); // 必传,推送语言,固定传 zh,此处为占位符
SuperSDK.getInstance().Invoke("push", "registerPush", paramsDic);

三、远程推送

说明:远程推送提供了服务端推送的功能。

1. 设置用户标识接口(必接)

接口描述:绑定推送用户,登录完成后调用。

注意: 传入的用户 ID 必须是 SuperSDK 获取到的带前缀的 osdk_user_id。

接口调用:

Dictionary<string, object> paramsDic = new Dictionary<string, object>();
paramsDic.Add("osdk_user_id", osdkUserId); // 必传,用户 ID,必须是带前缀的用户 ID,如 000016_123456
SuperSDK.getInstance().Invoke("push", "bindUser", paramsDic);

2. 收到远程推送回调(选接)

说明:当游戏调用注册推送服务、绑定用户两个接口后,就可以收到服务端推送过来的消息。接收的地方为 SuperSDK 的统一回调里面,如下所示:

接口回调:

public void OnCallBack(string moduleName, string funcName, string result)
{
    Debug.Log("moduleName:" + moduleName);
    Debug.Log("funcName:" + funcName);
    Debug.Log("result:" + result);

    if (moduleName.Equals("push"))
    {
        if (funcName.Equals("receiveRemoteNotification"))
        {
            // 处理服务端推送消息
            // iOS 和  Android 的消息体不一样,请分别参考 iOS 和 Android 原生 推送消息内容
        }
    }
}

四、本地通知

说明:推送模块提供了本地通知的功能。

1. 添加本地通知(必接)

接口描述:当游戏需要接入本地推送,调用存储本地推送的接口,如下所示:

注意:Android 在游戏被结束进程以后无法获取。

接口调用:

Dictionary<string, object> paramsDic = new Dictionary<string, object>();

paramsDic.Add("identifier", "1"); // 本地推送的唯一标识符,纯数字类型的字符串,长度不超过 8 位
paramsDic.Add("fireDate", "1234567890"); // 推送触发时间,为 10 位时间戳,秒
paramsDic.Add("alertTitle", "通知栏显示的推送标题"); // 通知栏显示的推送标题
paramsDic.Add("alertBody", "通知栏显示的推送内容"); // 通知栏显示的推送内容
paramsDic.Add("isSound", "1"); // 通知到达时是否需要开启声音,1:开启,0:关闭
paramsDic.Add("soundName", "default.caf"); // iOS:固定 default.caf, Android:通知声音文件名称,该文件放置在游戏包体的 res/raw 文件夹下,传入名称不能带有后缀,例如 res/raw/local.mp3,应该传入 local
paramsDic.Add("repeat", "0"); // 0:表示不重复,1:表示每天重复,2:表示每小时重复
paramsDic.Add("showType", "1"); // 0:表示应用在前台也需要弹出通知,1:表示应用在前台不需要弹出通知,注意:必须和注册接口传的值保持一致!

Dictionary<string, object> json = new Dictionary<string, object>();
json.Add("key" : "value");
paramsDic.Add("userInfo", json); // 透传信息

paramsDic.Add("badge", "1"); // 仅支持 iOS,应用上显示的消息条数
paramsDic.Add("vibrate", "1"); // 仅支持 Android,0:表示不需要震动,1:表示默认震动,2:表示自定义震动,即震动 3 下,每次震动 0.5 秒,每次间隔 0.5 秒
paramsDic.Add("iconName", "local_icon"); // 仅支持 Android,显示的 icon 名称,该文件放置在 res/drawable 下,并且值不带后缀,一般不能超过 521*512 像素,并且背景为透明,显示时安卓会去掉 RGB 值,显示为灰色

SuperSDK.getInstance().Invoke("push", "addLocalNotification", paramsDic);

接口回调:

public void OnCallBack(string moduleName, string funcName, string result)
{
    Debug.Log("moduleName:" + moduleName);
    Debug.Log("funcName:" + funcName);
    Debug.Log("result:" + result);

   if (moduleName.Equals("push"))
   {
        if (funcName.Equals("addLocalNotifcation"))
        {
            JsonData myData = JsonMapper.ToObject(result);
            int code = (int)myData["code"];
            if(code == SuperSDKConstants.SUCCESS){
                // 添加本地推送成功
            } else {
                // 本地推送添加失败,原因为:"+ myData["msg"].ToString();
            }
        }
    }
}

日志打印:

moduleName: push,
funcName: addLocalNotification,
result: {
    "msg": "本地推送添加成功",
    "data": {
        "repeat": 0,
        "alertTitle": "通知栏显示的推送标题",
        "badge": 1,
        "userInfo": {
            "key": "value"
        },
        "isSound": "1",
        "alertBody": "通知栏显示的推送内容",
        "identifier": "1",
        "soundName": "sound.caf",
        "fireDate": "1543983420",
        "showType": "0"
    },
    "code": 1
}

2. 收到本地通知回调(选接)

说明:当游戏调用注册推送服务、添加本地通知两个接口后,就可以接收本地通知消息。接收的地方为 SuperSDK 的统一回调里面,如下所示;

接口回调:

public void OnCallBack(string moduleName, string funcName, string result)
{
    Debug.Log("moduleName:" + moduleName);
    Debug.Log("funcName:" + funcName);
    Debug.Log("result:" + result);

   if (moduleName.Equals("push"))
   {
        if (funcName.Equals("receiveLocalNotification"))
        {
            // 推送的消息放在 data 里面,为 json 格式的字符串
            Debug.Log("收到本地推送消息:" + result);
        }
    }
}

日志打印:

moduleName : push,
funcName : receiveLocalNotification,
result : {
  "msg" : "收到本地推送消息",
  "data" : {
    "repeat" : "0",
    "alertTitle" : "通知栏显示的推送标题",
    "isSound" : "1",
    "alertBody" : "通知栏显示的推送内容",
    "identifier" : "1",
    "fireDate" : "1513652820",
    "userInfo" : {
      "key" : "value"
    }
  },
  "code" : 1
}

3. 查询指定标识符的本地通知(选接)

接口描述:当游戏需要接入本地推送,需要查询该 identifier 的本地推送是否存在,如下所示:

接口调用:

Dictionary<string, object> paramsDic = new Dictionary<string, object>();
paramsDic.Add("identifier", "1"); // 本地推送的唯一标识符,根据这个参数来查询
SuperSDK.getInstance().Invoke("push", "fetchLocalNotification", paramsDic);

接口回调:

public void OnCallBack(string moduleName, string funcName, string result)
{
    Debug.Log("moduleName:" + moduleName);
    Debug.Log("funcName:" + funcName);
    Debug.Log("result:" + result);

   if (moduleName.Equals("push"))
   {
        if (funcName.Equals("fetchLocalNotification"))
        {
            JsonData myData = JsonMapper.ToObject(result);
            int code = (int)myData["code"];
            if(code == SuperSDKConstants.SUCCESS){
                JsonData data = JsonMapper.ToObject(JsonMapper.ToJson(myData["data"]));
                // 该本地推送存在,推送的详细信息为 data 数据
            }else{ 
                // 本地推送查询失败,原因为:"+ myData["msg"].ToString();
            }
        }
    }
}

日志打印:

moduleName : push,
funcName : fetchLocalNotification,
result : {
  "msg" : "本地有该推送",
  "data" : {
    "repeat" : "0",
    "alertTitle" : "通知栏显示的推送标题",
    "isSound" : 1,
    "alertBody" : "通知栏显示的推送内容",
    "identifier" : "1",
    "fireDate" : "1513652820",
    "userInfo" : {
      "key" : "value"
    }
  },
  "code" : 1
}

4. 删除指定标识符的本地通知(选接)

接口描述:根据 identifier 删除本地推送,如下所示:

接口调用:

Dictionary<string, object> paramsDic = new Dictionary<string, object>();
paramsDic.Add("identifier", "1"); // 本地推送的唯一标识符,根据这个参数来删除
SuperSDK.getInstance().Invoke("push", "deleteLocalNotification", paramsDic);

5. 删除所有本地通知(选接)

接口描述:删除存在的所有本地推送,如下所示:

接口调用:

SuperSDK.getInstance().Invoke("push", "deleteAllLocalNotifications", null);