gpt4 book ai didi

php - 从我的 PHP 服务器发送 Amazon SNS

转载 作者:IT老高 更新时间:2023-10-28 23:30:13 25 4
gpt4 key购买 nike

我在 Android 和 iOS 平台都有一个应用程序。他们都在 Amazon SNS 上注册。这已成功完成,因为如果我有设备 token ,那么我可以登录到我在 Amazon 中的应用程序仪表板,并可以从他们的控制台发送 SNS。

我想让它自动化。我的意思是为应用程序拥有自己的 PHP 管理站点(和 API)。我想向管理站点添加另一个页面,该页面可以请求亚马逊 SNS 发送带有设备标识符、注册 key 和请求提供的消息正文的单个有效负载。

第一个问题 - 有可能吗?我见过Urban Airship允许的,亚马逊通常也允许吗?

第二个问题 - 流程是什么?因为我正在为我的一位客户做这件事,所以我无法访问所有文档。我的客户无法向亚马逊解释。

当我将我的应用程序注册到亚马逊时,他们不应该向我提供一些我可以用来通过 http 调用他们的服务的 key 和 secret 吗?

最佳答案

是的,这是可能的。从 here 下载 Amazon Web Service (AWS) PHP SDK并按照他们的说明在您的 Web 服务器 API 中使用它。从 Amazon 控制台获取适用于 iOS 和 android 的平台应用程序 ARN、访问 key ID 和 key 。然后尝试下面的代码并按照注释掉的说明进行操作:

<?php

require '<path to this file>/aws.phar';
use Aws\Sns\SnsClient;

if(isset($_POST['submit']))
{
$push_message = $_POST['push_message'];

if(!empty($push_message))
{
// Create a new Amazon SNS client
$sns = SnsClient::factory(array(
'key' => '<access key>',
'secret' => '<app secret>',
'region' => '<region code>'
));

// region code samples: us-east-1, ap-northeast-1, sa-east-1, ap-southeast-1, ap-southeast-2, us-west-2, us-gov-west-1, us-west-1, cn-north-1, eu-west-1

$iOS_AppArn = "<iOS app's Application ARN>";
$android_AppArn = "<android app's Application ARN>";

// Get the application's endpoints
$iOS_model = $sns->listEndpointsByPlatformApplication(array('PlatformApplicationArn' => $iOS_AppArn));
$android_model = $sns->listEndpointsByPlatformApplication(array('PlatformApplicationArn' => $android_AppArn));

// Display all of the endpoints for the iOS application
foreach ($iOS_model['Endpoints'] as $endpoint)
{
$endpointArn = $endpoint['EndpointArn'];
echo $endpointArn;
}

// Display all of the endpoints for the android application
foreach ($android_model['Endpoints'] as $endpoint)
{
$endpointArn = $endpoint['EndpointArn'];
echo $endpointArn;
}

// iOS: Send a message to each endpoint
foreach ($iOS_model['Endpoints'] as $endpoint)
{
$endpointArn = $endpoint['EndpointArn'];

try
{
$sns->publish(array('Message' => $push_message,
'TargetArn' => $endpointArn));

echo "<strong>Success:</strong> ".$endpointArn."<br/>";
}
catch (Exception $e)
{
echo "<strong>Failed:</strong> ".$endpointArn."<br/><strong>Error:</strong> ".$e->getMessage()."<br/>";
}
}

// android: Send a message to each endpoint
foreach ($android_model['Endpoints'] as $endpoint)
{
$endpointArn = $endpoint['EndpointArn'];

try
{
$sns->publish(array('Message' => $push_message,
'TargetArn' => $endpointArn));

echo "<strong>Success:</strong> ".$endpointArn."<br/>";
}
catch (Exception $e)
{
echo "<strong>Failed:</strong> ".$endpointArn."<br/><strong>Error:</strong> ".$e->getMessage()."<br/>";
}
}
}
}
?>

代码已经过测试并且可以正常工作,请随时根据需要进行更改。

关于php - 从我的 PHP 服务器发送 Amazon SNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21557179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com