2014-07-11 2 views
0

다음 PHP 코드를 사용하여 PushWoosh 원격 API에 푸시 알림을 보내고 있습니다. 그것의 IOS 장치에 대한 완벽하게 작동하고 완벽하게 안드로이드에 대한 (즉, 나는 API에서 모든 적절한 성공 응답을 얻을) 작동하지만 안드로이드에 대한 장치 등록으로 뭔가가 잘못되면 PushWoosh 콘솔 및 안드로이드 장치에서 InvalidRegistration 보고서를 얻을 PushWoosh에서 등록이 취소되었습니다. 누군가는 왜 그 빛을 비춰 줍니까? PushWoosh 지원은 사실상 존재하지 않습니다 (서비스 비용을 지불하기 전에 이것을 고려하십시오).PushWoosh에서 안드로이드 장치의 잘못된 등록

내가 로깅하는 응답 메시지가 예상대로입니다. 알 수없는 장치가 다시 등록되고 각 등록에 대해 성공한 응답을 받고 알림을 다시 보내고받은 응답 메시지가 성공적이며 알 수없는 장치가 표시되지 않습니다. 그런 다음 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 
} 

답변

0

OK :

우리는 생성하기 CakePHP의 정적 문자열 방법을 사용하고

장치 ID의

그것은이에 문자열을 출력
String::uuid(); 

형식 :

485fc381-e790-47a3-9794-1337c0a8fe68 

PushWoosh는 iOS 기기를 등록 할 때이 문제가 없었지만 sil 안드로이드 장치에이 형식을 사용할 때 ently 실패합니다. 이 "-"와 모든 것을 잘 벗겨 냈습니다.

내 이메일을 잘못 읽거나 응답하지 않기 때문에 부 푸시 워.

+0

왜 기기를 등록 할 때 CakePHP 방식을 사용합니까? hwid는 장치 자체에서 발생해야합니다. 죄송합니다. 완전히 혼란 스럽습니다. – shader

+0

우리는 사용자 정의 장치 식별자를 사용하여 장치를 사용자 계정에 연결하고 장치 메모리에 저장하고 이러한 서버 측을 생성합니다. 더 나은 설명은 우리의 서비스가있는 앱 인스턴스를 등록 할 때마다 업데이트되는 앱 설치 ID입니다. –

+0

기기마다 태그를 설정하지 않는 이유는 무엇입니까? 그것은 똑같은 것을 성취 할 것이고 pushwoosh와 혼동하지 않을 것입니다. – shader