Неверная регистрация устройств Android на PushWoosh
Я использую следующий код PHP для отправки push-уведомлений в удаленный API PushWoosh. Он отлично работает для устройств iOS и, кажется, отлично работает для Android (то есть я получаю все соответствующие ответы об успехах от API), но что-то не так с регистрацией устройства для Android, только когда я получаю отчеты InvalidRegistration в консоли PushWoosh и моих устройствах Android сняты с регистрации в PushWoosh. Кто-нибудь пролил свет на почему? Поддержка PushWoosh практически отсутствует (учтите это, прежде чем платить за услугу).
Сообщения с ответами, которые я регистрирую, соответствуют ожиданиям - я получаю неизвестные устройства, регистрирую их и получаю ответ об успешном завершении каждой регистрации, и я повторно отправляю уведомление, и ответное сообщение, которое я получаю, успешно и не показывает неизвестных устройств. Затем я проверяю историю push-уведомлений в консоли PushWoosh, и в отчете показывается сообщение InvalidRegistration и устройства удаляются.
<?php
//creates the notifications setting send time etc - this is not where the problem is
$notifications = $this->create_pushwoosh_notifications($devices);
$data = array("application"=>$appcode,
"auth"=>$apptoken,
"notifications"=>$notifications);
$pw = new push_woosh();
$r = $pw->create_message($data);
if($r){
$response = json_decode($r[1]);
if($response->status_code != 200){
//there was an error
}
error_log($response->status_message);
//retrieve message id's
$messages = $response->response->Messages;
//get any uknown devices associated with the message id's
$unknowns = $response->response->UnknownDevices;
//go through the messages
foreach($response->response->Messages as $message_id){
//act if there is unknowns
if(count($unknowns->$message_id)>0){//if there are unknown devices for a message
//flag that we need to resend once we have finished registering unknown devices
$resend = true;
//change the devices in notifications to the unknowns for the message_id that contained unknown devices
$notifications[$key[0]]['devices']=$unknowns->$message_id;
//loop unknowns
foreach($notifications[$key[0]]['devices'] as $device_id){
$regdata = array(
"application"=>$this->appcode,
"push_token"=>$devices[$device_id]['user_tokenid'],
"language"=>"en", // optional
"hwid"=> $devices[$device_id]['device_id'],//devices indexed by HWID
"timezone"=> 3600, // offset in seconds
"device_type"=>$devices[$device_id]['device_type']
);
}
//register the device
$r = $pw->register($regdata);
if($r){
$response = json_decode($r[1]);
if($response->status_code != 200){
//there was an error
}
error_log($response->status_message);
}else{
//also an error
}
}else{//remove the notification as all devices were known and dont need to resend
unset($notifications[$key[0]]);
}
}
if($resend){//we need to resend
//update $data with new $notifications
$data['notifications']=$notifications;
$r = $pw->create_message($data);
if($r){
$response = json_decode($r[1]);
if($response->status_code != 200){
//there was an error
}
error_log($response->status_message);
}else{
//also an error
}
}
}else{
//there was an error
}
1 ответ
Хорошо, если это когда-нибудь пригодится другому человеку, я буду счастлив:
Мы использовали метод статической строки CakePHP для генерации идентификаторов устройств
String::uuid();
Он выводит строку в следующем формате:
485fc381-e790-47a3-9794-1337c0a8fe68
У PushWoosh не было проблем с этим при регистрации устройств iOS, но он молчаливо отказывал при использовании этого формата для устройств Android. Снял "-" с этого и все нормально.
Бу PushWoosh за то, что не ошибся или не ответил на мое письмо.