【问题标题】:Push Notifications (Android & iOS) - Appcelerator推送通知(Android 和 iOS) - Appcelerator
【发布时间】:2016-04-20 02:23:55
【问题描述】:

如何让我的应用(Android 和 iOS)自动从控制面板或网络服务接收推送通知...我发现的唯一方法是在 Appcelerator 面板上,而不是自动...

我希望,例如,当数据库有更新时,推送出现在有问题的用户手机中……你怎么能这样做?

另一件事是,我怎样才能做到这一点对于 android 和 ios 是通用的?是否有任何模块或视频课程可以教做到这一点?

【问题讨论】:

    标签: push-notification titanium appcelerator appcelerator-titanium


    【解决方案1】:

    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 );
    

    请注意,Apple 不会像 Google 那样混合一系列令牌。由于 Android 的令牌大于 iOS 的令牌,因此我计算它的长度以知道它是哪个令牌。 $montaArray 来自我存储所有令牌的数据库

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多