Search code examples
androidpush-notificationgoogle-cloud-messagingappceleratorappcelerator-mobile

Can't get device token Android (Appcelerator)


I can't get the device token needed to use ACS Push notification in Android. I searched all related questions and didn't get the answer. I followed the guides Configuring push services for Android devices and Subscribing to push notifications.

  • Application type: mobile
  • Titanium SDK: Titanium Command-Line Interface, CLI version 3.3.0, Titanium SDK version 3.2.3.GA
  • Platform & version: Android 4.3
  • Device: Xiaomi Hongmi 1S
  • Host Operating System: OSX 10
  • Titanium Studio: Titanium Studio, build: 3.3.0.201407100905 Build: jenkins-titanium-rcp-master-164 (origin/master)

TiApp

<modules>
 <module platform="commonjs">ti.cloud</module>
        <module platform="iphone">ti.map</module>
        <module platform="android">ti.map</module>
        <module platform="android" version="2.2.0">ti.cloudpush</module>
</modules>

If don't set ti.cloudpush 2.2.0 version I get this error in log

[ERROR] :  Found incompatible Titanium Modules:
[ERROR] :     id: ti.cloudpush   version: 3.3.0  platform: android   min sdk: undefined
[ERROR] Application Installer abnormal process termination. Process exit value was 1

RELATED CODE

if (Ti.Platform.osname == "android") {
        var CloudPush = require('ti.cloudpush');
        CloudPush.retrieveDeviceToken({
            success : function deviceTokenSuccess(e) {
                // Use this device token with Ti.Cloud.PushNotifications calls
                // to subscribe and unsubscribe to push notification channels
                Alloy.Globals.tokenPush =   e.deviceToken;
                funciones.warn('Device Token: ' + e.deviceToken);
                funciones.suscribirCanal(param1,Alloy.Globals.tokenPush);
                //return token;
            },
            error : function deviceTokenError(e) {
                funciones.warn('Failed to register for push! ' + e.error);
            }
        });
        // These events monitor incoming push notifications
        CloudPush.addEventListener('callback', function(evt) {
            if(ostype === "android"){
                var alertString = JSON.parse(e.payload).android.alert;
                alert("Push recibido "+alertString);
            }


        });

    }

LOG STACKTRACE

[WARN] :   The module ti.cloudpush does not support the ABI: x86
[WARN] :   It only supports the following ABIs: armeabi, armeabi-v7a
[WARN] :   Your application will most likely encounter issues
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService: Failed to request device token.
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService: org.apache.http.conn.HttpHostConnectException: Connection to https://push-coordinator.cloud.appcelerator.com refused
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at com.appcelerator.cloud.push.CCPushService.requestForDeviceToken(CCPushService.java:247)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at com.appcelerator.cloud.push.CCPushService.getDeviceToken(CCPushService.java:82)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at com.appcelerator.cloud.push.CCPushService.access$000(CCPushService.java:28)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at com.appcelerator.cloud.push.CCPushService$1.run(CCPushService.java:172)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at java.lang.Thread.run(Thread.java:841)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService: Caused by: java.net.ConnectException: failed to connect to /54.215.6.76 (port 443): connect failed: ETIMEDOUT (Connection timed out)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.IoBridge.connect(IoBridge.java:114)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at java.net.Socket.connect(Socket.java:832)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     ... 11 more
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService: Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.Posix.connect(Native Method)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.IoBridge.connect(IoBridge.java:112)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     ... 16 more
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService: Invalid token request
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService: org.apache.http.conn.HttpHostConnectException: Connection to https://push-coordinator.cloud.appcelerator.com refused
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at com.appcelerator.cloud.push.CCPushService.requestForDeviceToken(CCPushService.java:247)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at com.appcelerator.cloud.push.CCPushService.getDeviceToken(CCPushService.java:82)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at com.appcelerator.cloud.push.CCPushService.access$000(CCPushService.java:28)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at com.appcelerator.cloud.push.CCPushService$1.run(CCPushService.java:172)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at java.lang.Thread.run(Thread.java:841)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService: Caused by: java.net.ConnectException: failed to connect to /54.215.6.76 (port 443): connect failed: ETIMEDOUT (Connection timed out)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.IoBridge.connect(IoBridge.java:114)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at java.net.Socket.connect(Socket.java:832)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     ... 11 more
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService: Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.Posix.connect(Native Method)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     at libcore.io.IoBridge.connect(IoBridge.java:112)
[ERROR] :  E/com.appcelerator.cloud.push.CCPushService:     ... 16 more
[ERROR] :  CloudpushModule: (Thread-3453) [3700,63022] Failed to retrieve device token! See stack trace below for more information.
[WARN] :   W/System.err: com.appcelerator.cloud.push.PushServiceException: Invalid token request
[WARN] :   W/System.err:    at com.appcelerator.cloud.push.CCPushService.getDeviceToken(CCPushService.java:123)
[WARN] :   W/System.err:    at com.appcelerator.cloud.push.CCPushService.access$000(CCPushService.java:28)
[WARN] :   W/System.err:    at com.appcelerator.cloud.push.CCPushService$1.run(CCPushService.java:172)
[WARN] :   W/System.err:    at java.lang.Thread.run(Thread.java:841)
[WARN] :   Failed to register for push! com.appcelerator.cloud.push.PushServiceException: Invalid token request

I appreciate any help. Thanks in advance.


Solution

  • You have a mismatch in the versions you are using

    Your Ti CLI is SDK 3.3.0 Your SDK is 3.2.3.GA And in studio you seem to be using a CI version i.e. 3.3.0.201407100905 which by it's nature will be un-stable

    I think in the first instance you need to make sure your installation of Ti is correct and I would start by re-installing the SDK to 3.3.0.GA

    Then use:

    <module platform="android">ti.cloudpush</module>
    

    without the version param. If it fails to compile at this point, it is telling you something. I.e. your installation is bad. Forcing a lower version number is just forcing the use of an old incompatible library version