在 Java 中,我尝试使用以下代码将 AWS SNS 消息发布到特定的 ARN 端点:
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.sns.AmazonSNS;
import com.amazonaws.services.sns.AmazonSNSClient;
import com.amazonaws.services.sns.model.PublishRequest;
import com.amazonaws.services.sns.model.PublishResult;
...
AmazonSNS snsClient = new AmazonSNSClient(new BasicAWSCredentials(System.getenv("AWS_KEY"), System.getenv("AWS_SECRET")));
snsClient.setRegion(Region.getRegion(Regions.US_EAST_1));
String message = "{\"APNS_SANDBOX\":\"{\\\"aps\\\":{\\\"type\\\":\\\"XXX\\\",\\\"email\\\":\\\"XXX@gmail.com\\\",\\\"alert\\\":\\\"some alert\\\"}}\"}";
PublishResult pr = snsClient.publish(new PublishRequest("arn:aws:sns:us-east-1:XXX:endpoint/APNS_SANDBOX/XXX/XXX-XXX-XXX-XXX", message));
Run Code Online (Sandbox Code Playgroud)
我一直收到以下错误消息:
Invalid parameter: Topic Name (Service: AmazonSNS; Status Code: 400; Error Code: InvalidParameter; Request ID: XXX
对此有什么想法吗?
我可以毫无问题地从 SNS 控制台发布到 ARN 端点,并且我尝试了不同的消息变体
我在 SwiftUI 视图中使用 switch 语句:
struct OnOffSwitchView: View {
@ObservedObject var vm = ViewModel()
var body: some View {
switch vm.state {
case .on:
OnView(vm: vm)
case .off:
OffView(vm: vm)
}
}
}
@MainActor class ViewModel: ObservableObject {
@Published var state: State = .on
enum State {
case on
case off
}
}
Run Code Online (Sandbox Code Playgroud)
其中子视图正在更改 ViewModel 状态(打开和关闭相同),以便切换条件更新,呈现新视图:
struct OnView: View {
@ObservedObject var vm: ViewModel
var body: some View {
VStack {
Text("Welcome to On")
Button { vm.state = .off } …Run Code Online (Sandbox Code Playgroud)