我们仅使用一个Google帐户配置了许多设备(超过200个)。两周前,这个帐户被黑了,我们不得不更改密码。
现在,要解决此问题,我们需要一种不要求用户更改密码的替代方法。 (许多用户是基本用户,他们不知道如何更改它。)
可能的替代方案可能是:
所有设备都具有由我们开发的具有“推送通知”功能的相同应用程序。
是否可以发送带有URL链接的通知,以从我公司的服务器下载新版本的应用程序?我看到了一个包含“click_url”参数的选项,但它需要在AndroidManifest.xml上实现自定义过滤器操作
这个替代方案需要安装在设备上的应用程序,而不是新版本的应用程序,因为我们没有任何方法来部署新版本的应用程序。
提前谢谢你。最好的问候。
答案 0 :(得分:1)
部署应用程序的帐户不同,所以问题还有,我们已恢复帐户,但用户必须在其设备上更新Google帐户密码。因此,我们可以部署新版本,但无法在设备上安装。我们在PHP中有一个后台,用于发送推送通知,因此我们希望在推送内容中发送链接,如果用户触摸推送,它将从我们的公司服务器下载新版本。所有设备都有"未知来源"启用。
这是我们发送推送的代码:
private function sendPushAndroid($tituloNot, $mensajeNot) {
// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'YOU_API_KEY' );
// Capturo todos los id y los meto en un array
// Intenta la inserción en la BBDD
try {
$conn = DbConfig::setUpDatabase ();
$conn->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$conn->beginTransaction ();
$stmt = $conn->prepare ( "SELECT deviceID FROM devices WHERE plataforma = 'android';" );
$stmt->execute ();
$result = $stmt->fetchAll ();
foreach ( $result as $v ) {
$registrationIds = array (
$v ["deviceID"]
);
}
// var_dump($registrationIds);
// Do not delete "big_picture_url
// prep the bundle
$msg = array (
'title' => $tituloNot,
'alert' => $mensajeNot,
'json' => '{"big_picture_url": "",
"string_extra": "100000583627394",
"string_value": "value",
"string_key": "key",
"is_public": true,
"item_type_id": 4,
"numeric_extra": 0}'
); // string_extra?
$fields = array (
'registration_ids' => $registrationIds,
'data' => $msg
);
$headers = array (
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
// curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true ); //not needed, by default it returns true or false.
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, json_encode ( $fields ) );
$sent = curl_exec ( $ch );
curl_close ( $ch );
} catch ( Exception $e ) {
// echo $e->getMessage();
}
}
答案 1 :(得分:0)
你是对的,你可以通过推送通知来做到这一点。我们使用hockeyapp为测试人员和开发人员发布我们的私有版本。