官方没有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);
}
}
1 条评论
字里行间流露出真挚的情感,让人感同身受,共鸣不已。