zoukankan      html  css  js  c++  java
  • 极光推送整理笔记

    1、.net调用极光方式

     public static class CommonUpgradeMessagePush
        {
            /*移动端推送APP代码 */
            private static string all_app_key = "f94a93bdb61717b91693388d";
            private static string all_master_secret = "cd46805ca3b845ecf3b4a484";
    
            /// <summary>
            /// 通用推送方法
            /// </summary>
            /// <param name="messageContentPushRecordType">推送类型</param>
            /// <param name="messageContentPushRecordTargetIDList">推送集合</param>
            /// <param name="messageContentText">消息内容</param>
            /// <param name="eventType">事件类型</param>
            /// <returns></returns>
            public static int MessagePush(int messageContentPushRecordType,List<string> messageContentPushRecordTargetIDList, string messageContentText, int eventType, out string returnMessageID)
            {
                returnMessageID = "";
    
                #region 参数校验
                if (string.IsNullOrEmpty(messageContentText))
                {
                    return UpgradeMessageEnum.MessagePushResult.PUSH_CONTENT_ERROR;
                }
                if (messageContentPushRecordTargetIDList.Count == 0)
                {
                    return UpgradeMessageEnum.MessagePushResult.TARGET_ID_ERROR;
                }
                #endregion
                
                try
                {
                    JPushClient client = new JPushClient(all_app_key, all_master_secret);
                    PushPayload payload = new PushPayload();
    
                    /*推送平台*/
                    payload.platform = Platform.all();
                    /*控制IOS是否发送生产环境, true为生产环境,false为开发环境*/
    
                    payload.options.apns_production = false;
                    /*推送对象*/
                    if (UpgradeMessageEnum.MessageContentPushRecordType.LABEL == messageContentPushRecordType)
                    {
                        /*TODO 鉴于目前的标签存储方式,标签推送都为tag_and ,即取交集的方式 */
                        var audience = Audience.s_tag_and(messageContentPushRecordTargetIDList.ToArray());
                        payload.audience = audience;
                    }
                    else if (UpgradeMessageEnum.MessageContentPushRecordType.USERIDENTITY == messageContentPushRecordType)
                    {
                        /*身份id小写*/
                        List<string> convertMessageContentPushRecordTargetIDList = messageContentPushRecordTargetIDList.Select(p => p.Replace('-', '_').ToLower()).ToList();
                        var audience = Audience.s_alias(convertMessageContentPushRecordTargetIDList.ToArray());
                        payload.audience = audience;
                    }
                    else
                    {
                        return UpgradeMessageEnum.MessagePushResult.PUSH_TYPE_ERROR;
                    }
    
    
                    /*工具栏提示?*/
                    var notification = new Notification().setAlert(messageContentText);
                    AndroidNotification androidnotification = new AndroidNotification();
                    androidnotification.setStyle(1);
                    androidnotification.setBig_text(messageContentText);
                    androidnotification.setAlert(messageContentText);
                    androidnotification.AddExtra("eventtype", eventType);
                    notification.AndroidNotification = androidnotification;
                    notification.IosNotification = new IosNotification();
                    notification.IosNotification.incrBadge(1).setAlert(messageContentText).AddExtra("eventtype", eventType);
                    payload.notification = notification.Check();
                    /*推送内容*/
                    payload.message = Message.content(messageContentText);
    
                    var result = client.SendPush(payload);
                    if (result.isResultOK())
                    {
                        returnMessageID = result.msg_id.ToString();
                        //client.getReceivedApi(returnMessageID);
                        //client.getReceivedApi_v3(returnMessageID);
                     
                        return UpgradeMessageEnum.MessagePushResult.SUCCESS;
                    }
                    return UpgradeMessageEnum.MessagePushResult.FAIL;
                }
                catch (Exception ex)
                {
            //注意:推送不成功,直接报异常。所以需要try catch
                    Log4NetUtility.Error("极光推送出现错误", ex);
                    return UpgradeMessageEnum.MessagePushResult.FAIL;
                }
            }
        }

    2、注意事项

    1)内容限制

    2)推送频率

    免费用户仅仅只是限制的api的调用频率:600次/min,超频api调用会有错误提示。

    3)极光提供的推送方式有:别名、标签、registrationID和广播

    一次推送 标签不得超过20个;别名不得超过1000个

    其中:registrationID 是客户端传递给服务端的

    客户端每次登录都获取一下,考虑到可能一个设备登录不同的账号,以及iOS9之后,卸载重装registrationID会改变

    3、常见问题

     1)推送消息后,查看消息具体被哪些用户收到

    只能在客户端收到消息后将信息上报给你们服务器,服务端没有提供API去直接获取「具体谁收到了」

    调 Report API 进行统计查询https://community.jiguang.cn/t/topic/28411/6

    --未完待续--

  • 相关阅读:
    做过的项目介绍
    我在爱板网写的-- 【望月追忆】带你入门STM32F0系列文章
    注释:佛祖保佑--永无BUG
    【项目】----C/C++语法知识:typedef struct 用法详解
    【神舟王】----PCB 数字地 和 模拟地 处理方法
    NSDateFormatter的常用格式和格式化参数
    IOS常用开发第三方库整理
    iOS上如何让按钮文本左对齐问题(对齐方式)
    Swift学习5---协议(protocol)和扩展(extension)
    Swift学习4---枚举和结构体
  • 原文地址:https://www.cnblogs.com/miaojf/p/9442959.html
Copyright © 2011-2022 走看看