android - APS云推送-负载为空

标签 android titanium appcelerator

刚刚将我的应用程序升级到 Appcelerator Platform 和 SDK 4.0.0。如果我在 Android 手机上进行全新安装,则会出现以下错误。它的行为就像推送通知正在传入一样,但实际上没有。有什么想法吗?

[ERROR] : APSCloudPush: Payload is null!
[ERROR] : TiApplication: (main) [4889,4889] Sending event: exception on thread: main msg:java.lang.RuntimeException: Unable to start receiver com.appcelerator.aps.GCMReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference; Titanium 4.0.0,2015/05/18 15:42,9239ff9
[ERROR] : TiApplication: java.lang.RuntimeException: Unable to start receiver com.appcelerator.aps.GCMReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
[ERROR] : TiApplication: at android.app.ActivityThread.handleReceiver(ActivityThread.java:2726)
[ERROR] : TiApplication: at android.app.ActivityThread.access$1700(ActivityThread.java:144)
[ERROR] : TiApplication: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
[ERROR] : TiApplication: at android.os.Handler.dispatchMessage(Handler.java:102)
[ERROR] : TiApplication: at android.os.Looper.loop(Looper.java:155)
[ERROR] : TiApplication: at android.app.ActivityThread.main(ActivityThread.java:5696)
[ERROR] : TiApplication: at java.lang.reflect.Method.invoke(Native Method)
[ERROR] : TiApplication: at java.lang.reflect.Method.invoke(Method.java:372)
[ERROR] : TiApplication: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
[ERROR] : TiApplication:
[ERROR] : TiApplication: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
[ERROR] : TiApplication: at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
[ERROR] : TiApplication: at org.json.JSONTokener.nextValue(JSONTokener.java:94)
[ERROR] : TiApplication: at org.json.JSONObject.<init>(JSONObject.java:156)
[ERROR] : TiApplication: at org.json.JSONObject.<init>(JSONObject.java:173)
[ERROR] : TiApplication: at com.appcelerator.aps.APSCloudPush.showTrayNotification(APSCloudPush.java:347)
[ERROR] : TiApplication: at com.appcelerator.aps.APSCloudPush.receivePayload(APSCloudPush.java:253)
[ERROR] : TiApplication: at com.appcelerator.aps.GCMReceiver.onReceive(GCMReceiver.java:30)
[ERROR] : TiApplication: at android.app.ActivityThread.handleReceiver(ActivityThread.java:2712)
[ERROR] : TiApplication: ... 9 more

这是js代码:

var CloudPush = require('ti.cloudpush');
var rc = CloudPush.isGooglePlayServicesAvailable();
if(rc == CloudPush.SUCCESS){
    var flagBgPush = function(){
        bgPush = true;
    };
    CloudPush.retrieveDeviceToken({
        success: deviceTokenSuccess,
        error: function(){}
    });
    CloudPush.addEventListener('trayClickLaunchedApp', flagBgPush);
    CloudPush.addEventListener('trayClickFocusedApp', flagBgPush);
    CloudPush.addEventListener('callback', pushBackgroundCheck);
}

最佳答案

您是否使用 php 脚本来发送通知?

如果是这样,我建议您使用这个脚本对我来说效果很好:

<?php
define('API_ACCESS_KEY', 'YOUR_API_ACESS_KEY' );
$registrationIds = array('DEVICES_TOKENS');
// prep the bundle
$msg = array('android' => array
(
        'alert'         => 'here is a message. message',
        'title'         => 'This is a title. title',
        'vibrate'       => true,
        'sound'         => 'default',
        'icon'  => 'appicon'
));
$fields = array
(
        'registration_ids'      => $registrationIds,
        'data'                  => array( "payload"  => $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 );
curl_close( $ch );
echo $result; 

关于android - APS云推送-负载为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31281984/

相关文章:

java - 成功调用 onAnimationUpdate,但在 View::onDraw 中使用 ValueAnimator 时显示没有变化

android - 如何在我的 Flutter 项目中迁移到 AndroidX?

titanium - 如何更改应用程序名称?

ios - 我们可以在 iOS 设备上使用 appcelerator titanium liveview 吗?

javascript - 在 iOS 模块中访问 Appcelerator 属性

android - 在数据库更改 Android 时得到通知

android - FragmentPagerAdapter instantiateItem 使用 fragment ?

android - 钛 android 中的 tableview 子项中的标签文本未更新。但在 IOS 中有效

android - Titanium Android Activity 不保持状态

android - Titanium SDK 5.1.2 - Android 6.0 权限