0

デバイスでプッシュ通知を受信するための Android GCM サービスに取り組んでいます。

トークンに登録できました。アプリが開いているときにのみ通知を受け取ります。

アプリが閉じているか、バックグラウンドで動作している場合、「ペイロードが null です!」というコンソール メッセージでアプリがクラッシュします。これは、トークンが正しく、プッシュ通知 msg がサーバーから受信したことを意味します。しかし、アプリケーションはそれをうまく処理していません。

私はここで何をしているのか分かりません。

これが私のコードです。

var CloudPush = require('ti.cloudpush');
CloudPush.addEventListener('trayClickLaunchedApp', function (evt) {
    alert('Tray Click Launched App: '+JSON.stringify(evt));
});
CloudPush.addEventListener('trayClickFocusedApp', function (evt) {
    alert('Tray Click Focused App: '+JSON.stringify(evt));
});
CloudPush.addEventListener('callback', function (evt) {
    alert("Callback: "+JSON.stringify(evt));
});
function deviceTokenSuccess(e) {
    Ti.API.info('Device Token: ' + e.deviceToken);
}
function deviceTokenError(e) {
    alert('Failed to register for push! ' + e.error);
}

Android(6.0.1)を搭載したNexus-6でチタンSDk 5.0.2およびCloudPush 3.4.1を使用しています

誰でも問題を解決するのを手伝ってくれますか?

4

1 に答える 1

0

これは、サーバー側のコードのエラーが原因だと思います。どのサーバーを使用していますか。php の場合は、次のコードを参照してください。

<?php
    /*
    Original code by @patrickjongmans
    Edited and tested by @ricardoalcocer

    Description:
    Originally posted at http://developer.appcelerator.com/question/140589/how-to-send-push-notifiaction-to-android-using-php-controled-acs-#254798

    @ricardoalcocer:
    My only change was to add the ti_ids to the POST_FIELDS
    */
    /*** SETUP ***************************************************/
    $key        = "<your_acs_app_key>";
    $username   = "<your_acs_admin_user>";
    $password   = "<your_acs_admin_password>";
    $to_ids     = "everyone";
    $channel    = "Allusers";
    $message    = "YOUR_MESSAGE";
    $title      = "YOUR_ANDROID_TITLE";
    $tmp_fname  = 'cookie.txt';
    $json       = '{"alert":"'. $message .'","title":"'. $title .'","vibrate":true,"sound":"default"}';

    /*** PUSH NOTIFICATION ***********************************/
    $post_array = array('login' => $username, 'password' => $password);

    /*** INIT CURL *******************************************/
    $curlObj    = curl_init();
    $c_opt      = array(CURLOPT_URL => 'https://api.cloud.appcelerator.com/v1/users/login.json?key='.$key,
                        CURLOPT_COOKIEJAR => $tmp_fname, 
                        CURLOPT_COOKIEFILE => $tmp_fname, 
                        CURLOPT_RETURNTRANSFER => true, 
                        CURLOPT_POST => 1,
                        CURLOPT_POSTFIELDS  =>  "login=".$username."&password=".$password,
                        CURLOPT_FOLLOWLOCATION  =>  1,
                        CURLOPT_TIMEOUT => 60);
// show debug message
//var_dump($c_opt);
    /*** LOGIN **********************************************/
    curl_setopt_array($curlObj, $c_opt); 
    $session = curl_exec($curlObj);     
// show debug message
//var_dump($session); 
    /*** SEND PUSH ******************************************/
    $c_opt[CURLOPT_URL]         = "https://api.cloud.appcelerator.com/v1/push_notification/notify.json?key=".$key; 
    $c_opt[CURLOPT_POSTFIELDS]  = "channel=".$channel."&payload=".$json."&to_ids=".$to_ids; 

    curl_setopt_array($curlObj, $c_opt); 
    $session = curl_exec($curlObj);     
// show debug message
 //var_dump($session);
    /*** THE END ********************************************/
    curl_close($curlObj);
?>

php と c# の両方で acs push を実行しました。問題を再現できました。

于 2016-03-06T16:27:46.700 に答える