我有一个用 java 编写的 AWS lambda 函数。它是适用于 android 和 ios 设备的通知服务。Android 使用 FCM 实现,iOS 使用 java apns sdk 实现。
对于 APNs,我需要向 APNs 函数发送一个安全文件,即 p12 文件。
APNs 函数接受以下格式的安全文件:
- java.io.文件
- java.io.InputStream
- 字节[]
- java.security.KeyStore
- java.lang.String - 用于文件路径
因此,我从 s3 存储桶中获取文件并将其包装在 inputstream 对象中并将输入流发送到 apns 函数。
我的代码片段下载文件并将其包装在 inputstream 对象中:
BasicAWSCredentials awsCreds = new BasicAWSCredentials(key,password);
InputStream securityFileInputStream = null;
String bucket_name = <bucket_name>;
String key_name = <file_name>;
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(Regions.<region_name>)
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.build();
try {
S3Object o = s3Client.getObject(bucket_name, key_name);
securityFileInputStream = o.getObjectContent();
} catch (AmazonServiceException | IOException e) {
logger.info(e.toString());
}
不知何故,该函数没有抛出错误,但 APNs 通知没有到达用户。 有没有更好的方法来下载安全文件并以上述任何格式发送。