开发者社区> 问答> 正文

移动推送 后端OpenApi 离线状态下无法使用厂商通道。

我在后端集成了移动推送的java sdk。使用阿里云页面控制台推送时,可以在App离线的状态下,使用厂商通道弹出系统通知。但使用后端SDK的情况下,只有App在线的情况下才行,不知道哪里出了问题,求大神解决。下面是我的代码

public static void testPushNoticeToAndroid() {
        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", AliCloudApiAccessKay.ACCESS_KEY_ID, AliCloudApiAccessKay.ACCESS_KEY_SECRET);
        IAcsClient client = new DefaultAcsClient(profile);

        PushRequest pushRequest = new PushRequest();
        // 推送目标。
        pushRequest.setAppKey(AliCloudApiAccessKay.APP_KEY);
        pushRequest.setTarget("ALL"); // 推送目标。DEVICE:推送给设备、ACCOUNT:推送给指定帐号、TAG:推送给自定义标签、ALL:推送给全部。
        pushRequest.setTargetValue("ALL");
        pushRequest.setPushType("NOTICE"); // 消息类型。取值为MESSAGE、NOTICE。
        pushRequest.setDeviceType("ANDROID"); // 设备类型。取值为ANDROID、iOS、ALL。
        // 推送配置。
        pushRequest.setTitle("ALi Push Title"); // 消息的标题。
        pushRequest.setBody("Ali Push Body"); // 消息的内容。
        // 推送配置:Android。
        pushRequest.setAndroidNotifyType("BOTH");//通知的提醒方式。VIBRATE:震动、SOUND:声音、BOTH:声音和震动、NONE:静音。
        pushRequest.setAndroidOpenType("APPLICATION"); //点击通知后动作。APPLICATION:打开应用、ACTIVITY:打开AndroidActivity、URL:打开URL、NONE:无跳转。
        // 指定notificaitonchannel id。
        pushRequest.setAndroidNotificationChannel("1");

        try {
            PushResponse response = client.getAcsResponse(pushRequest);
            System.out.println(new Gson().toJson(response));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

    }

展开
收起
msdx4qdou27oo 2021-03-18 22:32:42 583 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
十分钟上线-使用函数计算构建支付宝小程序服务 立即下载
机器学习在互联网后端技术中的应用 立即下载
最大化阿里云OpenAPI能力的方法和实践 立即下载