【问题标题】:Square notification android (with GCM)方形通知android(带GCM)
【发布时间】:2015-02-20 10:36:36
【问题描述】:

我尝试将 GCM 安装到我的 Android 应用程序中,我终于成功收到了“通知”,但它不是一个好消息,只是一个类似的正方形。

我不知道问题是在我这边(android部分)还是在另一边(php)

就我而言,我认为唯一的问题可能出在清单上:

<?xml version="1.0" encoding="utf-8"?>    
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.googlecloudmessaging8"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="14" />

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

<permission android:name="com.example.googlecloudmessaging8.permission.C2D_MESSAGE"
    android:protectionLevel="signature" ></permission>

<uses-permission android:name="com.example.googlecloudmessaging8.permission.C2D_MESSAGE"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".GcmReceiver"
        android:exported="true"
        android:process=":remote"
        android:permission="com.google.android.c2dm.permission.SEND">

        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />

            <category android:name="com.example.googlecloudmessaging8" />
        </intent-filter>
    </receiver>

    <service android:name=".GcmMessageHandler"></service>

    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
</application>

GCM接收器:

public class GcmReceiver extends WakefulBroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {

    ComponentName comp = new ComponentName(context.getPackageName(), GcmMessageHandler.class.getName());

    startWakefulService(context, (intent.setComponent(comp)));
    setResultCode(Activity.RESULT_OK);
}

}

GcmMessageHandler :

public class GcmMessageHandler extends IntentService{

String mes;
private Handler handler;

public GcmMessageHandler(){
    super("GcmMessageHandler");
}


@Override
public void onCreate() {
    super.onCreate();
    handler = new Handler();
}

@Override
protected void onHandleIntent(Intent intent){
    Bundle extras = intent.getExtras();

    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);

    String messageType = gcm.getMessageType(intent);

    mes = extras.getString("title");
    showToast();

    Log.i("GCM", "Received : (" + messageType + ") "  +extras.getString("title"));

    GcmReceiver.completeWakefulIntent(intent);

}

public void showToast(){
    handler.post(new Runnable(){

        @Override
        public void run() {
            Toast.makeText(getApplicationContext(), mes, Toast.LENGTH_LONG).show();
        }
    });
}

}

在 gcm_test.php 上,我看到了这个:

$aPushs[$iCpt]['message']       = 'message par defaut';
$aPushs[$iCpt]['link']          = 'http://www.google.fr/';    

我只有一个黑色方块,而不是“默认消息”,有人知道为什么吗? (在其他设备上它是一个矩形,也是空的)

【问题讨论】:

  • 清单文件中的一切似乎都很好。发布您的接收者代码和处理您收到的消息的代码

标签: php android notifications push-notification google-cloud-messaging


【解决方案1】:

我认为您的代码与此类似: https://www.youtube.com/watch?v=Vd8bIkE29U4

请按照该步骤进行。我试过了,效果很好。

另外,你可以在这里获取source code参考我的github:

https://github.com/jbj88817/Google-Cloud-Messaging-GCM-ex

【讨论】:

  • 是的,它是一样的。但我关注的是 GoogleCloudMessaging 而不是 java-post-gcm。因为在我的应用程序中,我无法复制 Id 注册器以将其粘贴到新程序中。我不编码服务器端。我的服务器端在 PHP 中,我将注册者 ID 发送给它,他必须发送 GCM 通知。要将此代码合并到我的应用程序中,我无法将其拆分为两个程序...
  • 我不知道我是否清楚,我不能使用这种方法,因为我必须向数据库中的多个终端发送通知。
  • 我刚刚在server side 上尝试了java-post-gcm,效果很好。我觉得你也可以试试parse push notificationhere,也是基于GCM
猜你喜欢
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
相关资源
最近更新 更多