9***@qq.com
9***@qq.com
  • 发布:2018-03-06 10:45
  • 更新:2018-03-06 11:18
  • 阅读:1886

集成个推,透传消息,ios在线自动会弹出个confirm,这个confirm可以去掉吗

分类:HBuilder

集成个推,透传消息,ios在线自动会弹出个confirm,这个confirm可以去掉吗

2018-03-06 10:45 负责人:无 分享
已邀请:

最佳回复

猫猫猫猫

猫猫猫猫 - 用户已离线

出现这个说明错了,这不是透传是通知,检查更正。

  • 9***@qq.com (作者)

    能分享一份j个推java后端代码嘛,求指点

    2018-03-31 12:50

  • 9***@qq.com (作者)

    下面是我的java后端代码,请问下是这是透传消息吗?

    /**



    • 个推的java服务端发送消息推送



    • @author lyb


    • */

      public class GeTuiPushUtil {

      // 定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置

      private static String appId = "ZqenrIEpuQ6ORuEktWvYD6";

      private static String appKey = "vYR4bp28VQ7PAddJYAG3j1";

      private static String masterSecret = "4NkMiCiac3AmNidmsVgYh6";

      private static String host = "http://sdk.open.api.igexin.com/apiex.htm";


      @SuppressWarnings("deprecation")

      public static boolean pushMessageToList(String title, String message, Map<String, String> extendInfo,

      boolean offline, long offlineExpireTime, List<TUserClient> clientList) {


      try {  
      IGtPush push = new IGtPush(host, appKey, masterSecret);
      // 通知透传模板
      ListMessage listMessage = new ListMessage();
      ITemplate template = getTransmissionTemplate(title, message, JSON.toJSONString(extendInfo));
      listMessage.setData(template);
      // 设置消息离线,并设置离线时间
      listMessage.setOffline(offline);
      // 离线有效时间,单位为毫秒,可选
      listMessage.setOfflineExpireTime(offlineExpireTime);

      // 配置推送目标
      List<Target> targets = new ArrayList<Target>();
      for (TUserClient client : clientList) {
      // TODO: 一次建议50-100个CID
      Target target = new Target();
      target.setAppId(appId);// 必填,设置客户端所属应用唯一ID
      target.setClientId(client.getClientId());// 必填,设置客户端身份ID
      targets.add(target);
      }

      // taskId用于在推送时去查找对应的message
      String taskId = push.getContentId(listMessage);
      IPushResult result = push.pushMessageToList(taskId, targets);
      System.out.println(result.getResponse().toString());
      return result.getResultCode() == EPushResult.RESULT_OK;
      } catch (Exception e) {
      Tracker.e(e);
      return false;
      }

      }


      private static NotificationTemplate getTransmissionTemplate(String title, String text, String content) {


      NotificationTemplate template = new NotificationTemplate();  
      template.setAppId(appId);// 设置APPID
      template.setAppkey(appKey);// 设置APPKEY
      template.setTransmissionType(1);// 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
      System.out.println(content);
      template.setTransmissionContent(content);

      Style0 style = new Style0();
      style.setTitle(title);// 设置通知栏标题
      style.setText(text);// 设置通知栏内容
      style.setLogoUrl(""); // 配置通知栏网络图标
      style.setRing(true);// 设置通知是否响铃
      style.setVibrate(true);// 设置通知是否震动
      style.setClearable(true);// 设置通知是否可清除
      template.setStyle(style);

      // iOS推送使用该字段
      APNPayload payload = new APNPayload();
      payload.setAutoBadge("0");// 设置角标,还可以实现显示数字的自动增减,如"+1"、"-1"、"1"等
      payload.setContentAvailable(1);// 推送直接带有透传数据
      payload.setSound("default"); // 通知铃声文件名,无声设置为"com.gexin.ios.silence"
      payload.setAlertMsg(getDictionaryAlertMsg(title, text)); // 字典模式使用APNPayload.DictionaryAlertMsg
      template.setAPNInfo(payload);

      return template;

      }


      private static APNPayload.DictionaryAlertMsg getDictionaryAlertMsg(String title, String text) {


      APNPayload.DictionaryAlertMsg alertMsg = new APNPayload.DictionaryAlertMsg();  
      alertMsg.setBody(text);// 通知文本消息字符串
      alertMsg.setActionLocKey("ActionLockey");// (用于多语言支持)指定执行按钮所使用的Localizable.strings
      alertMsg.setLocKey("LocKey");// (用于多语言支持)指定Localizable.strings文件中相应的key
      alertMsg.addLocArg("loc-args");// 如果loc-key中使用的占位符,则在loc-args中指定各参数
      alertMsg.setLaunchImage("launch-image");// 指定启动界面图片名
      // iOS8.2以上版本支持
      alertMsg.setTitle(title);// 通知标题
      alertMsg.setTitleLocKey("TitleLocKey");// (用于多语言支持)对于标题指定执行按钮所使用的Localizable.strings,仅支持iOS8.2以上版本
      alertMsg.addTitleLocArg("TitleLocArg");// 标题,如果loc-key中使用的占位符,则在loc-args中指定各参数,仅支持iOS8.2以上版本
      return alertMsg;

      }


      public static void main(String[] args) throws Exception {


      // 发送透传消息  
      for (int i = 0; i < 2; i++) {
      Thread.sleep(1000);

      List<TUserClient> clientidList = new ArrayList<>();
      TUserClient user1 = new TUserClient();
      user1.setClientId("d4dc61968dec996b6858f11b296d8996");
      TUserClient user2 = new TUserClient();
      user2.setClientId("7c7610797081f9a05b3656085324d795");
      clientidList.add(user1);
      clientidList.add(user2);

      Map<String, String> extendInfo = new HashMap<>();
      extendInfo.put("title", "title");
      extendInfo.put("content", "content");
      extendInfo.put("payload", "payload");

      /**
      * 每天的免费次数是100次
      */
      // pushMessageToApp(getTransmissionTemplate(map));
      /**
      * 列表推接口,一天限制200万次,一次建议50-100个cid,可以多线程循环推送;推送内容一致的情况下,
      * contentid可以复用,这样的只算一次
      */
      pushMessageToList("a", "b", extendInfo, true, 555555555, clientidList);
      }

      }

      }



    2018-04-12 14:13

付楚

付楚 - web前端开发

楼上说的对

  • 9***@qq.com (作者)

    你好,我是按照个推官网的文档写的后端java代码,请问有过类似的代码能分享份参考下嘛

    2018-03-31 12:49

  • 付楚

    这个没有哦,检查下你们的那个推送证书类型是不是正确的

    2018-03-31 14:27

9***@qq.com

9***@qq.com (作者)

下面的代码确实会执行 ---》alert("接收到在线透传消息:");

plus.push.addEventListener("receive", function(msg) {
if(msg.aps) { // Apple APNS message
alert("接收到在线APNS消息:");
} else {
alert("接收到在线透传消息:");
getPushdata(msg);
//弹出显示的消息的ui
if(busying == true) {
return;
}
toggleMenu();
}
}, false);

该问题目前已经被锁定, 无法添加新回复