0

如何讓我的應用程序(Android和iOS)從控制面板或Web服務自動接收推送通知...我發現的唯一方法是在Appcelerator面板上,並不是自動的...推送通知(Android和iOS) - Appcelerator

我希望,例如,當數據庫中有更新時,推送出現在用戶的手機中......你怎麼能這樣做?

另一件事是,我怎麼能做到這一點通用的Android和IOS?是否有任何模塊或視頻課程教導要做到這一點?

回答

2

For Multi Push Module

這是我的PHP的多平臺推射擊的一個組成部分。

// iOS 
    $apnsHost = 'gateway.push.apple.com'; 
    $apnsPort = 2195; 
    $apnsCert = 'apns-prod.pem'; 

    // 
    $abrirPush = 1; 
    $mensagem = array(
     "id_push" => $id_push, 
     "id_empresa" => $id_empresa, 
     "abrir" => $abrirPush 
    ); 
    $mensagem = json_encode($mensagem); 
    $arr['aps'] = array(
     'alert' => $nome_empresa . ' tem uma mensagem para você' , 
     'badge' => 1, 
     'sound' => 'default', 
     'body' => $mensagem 
    ); 
    $payload = json_encode($arr); 

    // Abre Conexão iOS 
    $streamContext = stream_context_create(); 
    stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); 
    $apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext); 

    // Android 
    $arrayAndroid = Array(); 


    // Search for iOS or Android Device 
    for ($i = 0; $i < count($montaArray); $i++){ 

     $pegaToken = $montaArray[$i]; 

     $contaToken = strlen($pegaToken); 


     if ($contaToken < 70){ 

      $apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $montaArray[$i])) . chr(0) . chr(strlen($payload)) . $payload; 
      fwrite($apns, $apnsMessage); 

     }else{ 

      /// PUSH ANDROI //// 
      array_push($arrayAndroid, $montaArray[$i]); 
     } 
    } 

    fclose($apns); 

    // API access key from Google API's Console (Server KEY) 
    define('API_ACCESS_KEY', 'KEY_HERE'); 

    // prep the bundle 
    $msg = array 
    (
     'message' => 'Tem uma mensagem para você', 
     'title'  => $nome_empresa, 
     'payload' => $mensagem, 
     'vibrate' => 1, 
     'sound'  => 1, 
     'largeIcon' => 'large_icon', 
     'smallIcon' => 'small_icon' 
    ); 
    $fields = array 
    (
     'registration_ids' => $arrayAndroid, 
     '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); 
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($fields)); 
    $result = curl_exec($ch); 
    print $result; 
    curl_close($ch); 

請注意,蘋果公司並不像谷歌那樣合併一批代幣。由於Android的令牌大於iOS的令牌,因此我會計算它的長度以知道它是哪個令牌。 $montaArray來自我的數據庫,其中存儲了所有令牌

+0

謝謝道格拉斯! –

+0

我編輯了我的答案。 Checkit =) –