Я пытаюсь реализовать push-уведомление с помощью Phonegap в Android с помощью push-плагина. Все работает нормально, но проблема с идентификаторами регистрации устройства. Каждый раз, когда приложение запускает его, отправляет ajax-запрос на сервер, чтобы сохранить идентификаторы регистрации, позже его можно использовать. для отправки уведомления на устройство. На стороне сервера я также проверил, зарегистрировано ли уже устройство. Проблема в том, что на одном и том же устройстве генерируются разные регистрационные идентификаторы, поэтому проверка на стороне сервера завершается неудачно (поскольку у одного и того же устройства разные регистрационные идентификаторы). Вот мой толчок файл .js
document.addEventListener("deviceready", onDeviceReady, false);
var pushNotification;
function onDeviceReady() {
pushNotification = window.plugins.pushNotification;
setupNotificationsForandroid();
}
function setupNotificationsForandroid() {
if ( device.platform == 'android' || device.platform == 'Android' || device.platform == "amazon-fireos" ){
pushNotification.register(
successHandler,
errorHandler,
{
"senderID":"527612045331",
"ecb":"onNotification"});
} else {
pushNotification.register(
tokenHandler,
errorHandler,
{
"badge":"true",
"sound":"true",
"alert":"true",
"ecb":"onNotificationAPN"});
}
}
// Android
function onNotification(e) {
switch( e.event )
{
case 'registered':
if ( e.regid.length > 0 ){
//set up the server call for storing registraion ids
$.ajax({
url:'common_db.php',
data:'action='+'registergcm'+'&id='+e.regid,
success:function(data){
}
});
}
break;
case 'message':
// if this flag is set, this notification happened while we were in the foreground.
if(e.foreground){
var soundfile = e.soundname || e.payload.sound;
var my_media = new Media("android/assets/www/"+ soundfile);
my_media.play();
}else{
// otherwise we were launched because the user touched a notification in the notification tray.
}break;
case 'error':
console.log("Error"+e.msg);
break;
default:
console.log("An unknown event");
return;
}
}
в моем php файле
//get id from application
$reg_id=$_GET['id'];
//this check fails beacuse of differnt registration ids from the device
$sql=mysql_query("select reg_id from tbl_insert_ids where id='$reg_id'");
//check if already registerd
if(mysql_num_rows($sql)==1){
//do nothing
echo '';
}else{
//store the registration ids in database table.
$sql=mysql_query("insert into tbl_insert_ids values('','$reg_id')");
if($sql){
echo 'Success';
}else{
echo 'Error'
}
}
Я протестирован на одном устройстве, в моей таблице более двух строк регистрационных идентификаторов. Пожалуйста, помогите.
Задача ещё не решена.
Других решений пока нет …