官方没有api提供, 自己尝试了好几天, 记录一下.

APNs

下面代码是沙盒环境 , 正式环境修改ChannelType.APNS 即可


    public static void sendApnsMessage(String title, String message, String deviceToken) {
        String accessKey = "";
        String secretKey= "";
        String projectId = "";
        PinpointClient pinpoint = PinpointClient.builder()
               .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey)))
                .region(Region.US_EAST_1).build();
        try {
            Map<String, AddressConfiguration> addressMap = new HashMap<>();
            AddressConfiguration addConfig = AddressConfiguration.builder()
                    .channelType(ChannelType.APNS_SANDBOX)
                    .build();
            addressMap.put(deviceToken, addConfig);
            APNSMessage smsMessage = APNSMessage.builder()
                    .body(message)
                    .title(title)
                    .build();
            // Create a DirectMessageConfiguration object.
            DirectMessageConfiguration direct = DirectMessageConfiguration.builder()
                    .apnsMessage(smsMessage)
                    .build();

            // 这是demo里提供的方法 msgReq,
            MessageRequest msgReq = MessageRequest.builder()
                    .addresses(addressMap)
                    .messageConfiguration(direct)
                    .build();

            // create a SendMessagesRequest object
            SendMessagesRequest request = SendMessagesRequest.builder()
                    .applicationId(projectId)
                    .messageRequest(msgReq)
                    .build();

            SendMessagesResponse response = pinpoint.sendMessages(request);
            MessageResponse msg1 = response.messageResponse();
            Map map1 = msg1.result();

            // Write out the result of sendMessage.
            map1.forEach((k, v) -> System.out.println((k + ":" + v)));
        } catch (PinpointException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

FCM

FCM的发送用的ChannelType是GCM, 技术人员说这么写没问题,测试也成功了

public static void sendFcmMessage(String title, String message, String deviceToken) {
        String accessKey = "";
        String secretKey= "";
        String projectId = "";
        PinpointClient pinpoint = PinpointClient.builder()
               .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey)))
                .region(Region.US_EAST_1).build();
        try {
            Map<String, AddressConfiguration> addressMap = new HashMap<>();
            AddressConfiguration addConfig = AddressConfiguration.builder()
                    .channelType(ChannelType.GCM)
                    .build();
            addressMap.put(deviceToken, addConfig);
            GCMMessage smsMessage = GCMMessage.builder()
                    .body(message)
                    .title(title)
                    .build();
            // Create a DirectMessageConfiguration object.
            DirectMessageConfiguration direct = DirectMessageConfiguration.builder()
                    .gcmMessage(smsMessage)
                    .build();

            // 这是demo里提供的方法 msgReq,
            MessageRequest msgReq = MessageRequest.builder()
                    .addresses(addressMap)
                    .messageConfiguration(direct)
                    .build();

            // create a SendMessagesRequest object
            SendMessagesRequest request = SendMessagesRequest.builder()
                    .applicationId(projectId)
                    .messageRequest(msgReq)
                    .build();

            SendMessagesResponse response = pinpoint.sendMessages(request);
            MessageResponse msg1 = response.messageResponse();
            Map map1 = msg1.result();

            // Write out the result of sendMessage.
            map1.forEach((k, v) -> System.out.println((k + ":" + v)));
        } catch (PinpointException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
最后修改:2024 年 03 月 01 日
感恩的心,感谢有你!