在apiCloud上如何使用极光推送(ajpush)功能

首先在极光推送推送官网,绑定app项目。


安卓只需要绑定应用包名,ios需要生成推送证书做绑定。具体极光推送官网有详细步骤。在绑定项目后,会生成AppKey和Master Secret

完成上面的步骤,极光官网的操作就结束了。

下面进行apiCloud的操作:首先,添加ajpush模块,并在congfig.xml文件中添加代码 

 <feature name="ajpush">
    <param name="app_key" value="极光推送的AppKey"/>
    <param name="channel" value="极光推送的Master Secret"/>
  </feature>


然后在config.xml设置的起始页中,写入相应代码,具体可看ajpush模块,需要注意的是,安卓需要执行init()方法,ios会自动初始化。若是需要增加语音推送功能,安卓可以把语音播放功能放在初始化方法中。

最后进行后端的编码:我使用的是java后端代码,先导入jar包 

下面是具体的代码:

  • public class UserJpush {
    
        private static final Logger log = LoggerFactory.getLogger(UserJpush.class);
        private static final String APPKEY ="";
        private static final String MASTERSECRET = "";
    
    
        public static final String TITLE = "申通快递";
        public static final String ALERT = "祝大家新春快乐12";
        public static final String MSG_CONTENT = "申通快递祝新老客户新春快乐1";
        public static final String TAG = "tag_api";
    
    
        public  static JPushClient jpushClient=null;
    
        @SuppressWarnings("deprecation")
        public static void sendPush(String title,String message,String reader) {
            sendPush(title,message,reader,null,null,null,null);
        }
        
        /**
         * 
         * @param title 推送主题
         * @param message 推送的文字消息
         * @param reader 接收推送人
         * @param jump2name 点击推送时跳转的页面名称
         * @param jump2url 点击推送时跳转的页面地址
         * @param jump2menu 底部导航栏第几个
         */
        @SuppressWarnings("deprecation")
        public static void sendPush(String title,String message,String reader,String jump2name,String jump2url,String jump2menu,String type) {
            jpushClient = new JPushClient(MASTERSECRET, APPKEY, 3);
         PushPayload payload=buildPushObject_android_and_ios(title,message,reader,jump2name,jump2url,jump2menu,type);
       // PushPayload payload = buildPushObject_all_alias_alert();
            try {
                System.out.println(payload.toString());
                PushResult result = jpushClient.sendPush(payload);
                System.out.println(result+"................................");
                log.info("Got result - " + result);
            } catch (APIConnectionException e) {
                log.error("Connection error. Should retry later. ", e);
            } catch (APIRequestException e) {
                log.error("Error response from JPush server. Should review and fix it. ", e);
                log.info("HTTP Status: " + e.getStatus());
                log.info("Error Code: " + e.getErrorCode());
                log.info("Error Message: " + e.getErrorMessage());
                log.info("Msg ID: " + e.getMsgId());
            }
        }
    
        public static PushPayload buildPushObject_all_all_alert() {
            return PushPayload.alertAll(ALERT);
        }
    
        public static PushPayload buildPushObject_all_alias_alert() {
            boolean writeable = true;
            return PushPayload.newBuilder()
                    .setPlatform(Platform.all())//设置接受的平台
                    .setAudience(Audience.all())//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
                   // .setOptions(apns_production :true)
                    .setOptions(Options.newBuilder().setApnsProduction(writeable).build())
                    .setNotification(Notification.alert(ALERT))
    
                    .build();
        }
    
        public static PushPayload buildPushObject_android_tag_alertWithTitle() {
            return PushPayload.newBuilder()
                    .setPlatform(Platform.android())
                    .setNotification(Notification.android(ALERT, TITLE, null))
    //                       .setAudience(Audience.alias("18888888888"))
    //                       .setAudience(Audience.all())
                    .build();
        }
    
        public static PushPayload buildPushObject_android_and_ios(String title, String message, String reader, String jump2name, String jump2url, String jump2menu, String type) {
            boolean available = true;
            Map<String,String> extras = new HashMap<>();
            extras.put("jump2name", jump2name);
            extras.put("jump2url", jump2url);
            extras.put("jump2menu", jump2menu);
            extras.put("type",type);
    
            return PushPayload.newBuilder()
                    .setPlatform(Platform.android_ios())
                  //   .setAudience(Audience.all())
                 .setAudience(Audience.alias(StrUtils.isNotBlank(reader)?reader:"18888888888"))
                    .setMessage(Message.newBuilder().addExtra("type", type)
                            .setMsgContent(MSG_CONTENT)
                            .build())
                 .setOptions(Options.newBuilder().setTimeToLive(864000L).build() )//离线消息保留时长 最长10                .setOptions(Options.newBuilder().setApnsProduction(available).build())  //正式环境还是开发环境(正式:true,开发:false                .setNotification(Notification.newBuilder()
                            .setAlert(StrUtils.isBlank(message)?"您有新的消息,请查看":message)
                            .addPlatformNotification(AndroidNotification.newBuilder()
                                    .setTitle(StrUtils.isBlank(title)?"消息提醒":title)
                                    .addExtras(extras)
                                    .build())
                            .addPlatformNotification(IosNotification.newBuilder()
                                    .incrBadge(1)
                                    .addExtras(extras)
                                    .setSound("widget/test.wav") //ios独有的声音属性,替换推送通知声音。
                                    .build())
                            .build())
                    .build();
        }
    
        public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {
            return PushPayload.newBuilder()
                    .setPlatform(Platform.ios())
                    .setAudience(Audience.tag_and("tag1", "tag_all"))
                    .setNotification(Notification.newBuilder()
                            .addPlatformNotification(IosNotification.newBuilder()
                                    .setAlert(ALERT)
                                    .setBadge(5)
                                    .setSound("happy")
                                    .addExtra("from", "JPush")
                                    .build())
                            .build())
                    .setMessage(Message.content(MSG_CONTENT))
                    .setOptions(Options.newBuilder()
                            .setApnsProduction(true)
                            .build())
                    .build();
        }
    
        public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {
            return PushPayload.newBuilder()
                    .setPlatform(Platform.android_ios())
                    .setAudience(Audience.newBuilder()
                            .addAudienceTarget(AudienceTarget.tag("tag1", "tag2"))
                            .addAudienceTarget(AudienceTarget.alias("alias1", "alias2"))
                            .build())
                    .setMessage(Message.newBuilder()
                            .setMsgContent(MSG_CONTENT)
                            .addExtra("from", "JPush")
                            .build())
                    .build();
        }
    
      
    
    
注意:在极光官网绑定app项目后,先进行推送自测,可以选择广播的形式,确认能够推送在进行下面的操作。
apicloud绑定模块时,绑定了ajpush后,不要绑定push模块,以免模块冲突。
增加制定推送声音,安卓和ios的原理不同。ios通过替换推送声音的方式,通过
 .setSound("widget/test.wav")设置。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值