推送通知不起作用

时间:2013-05-23 11:58:12

标签: android android-emulator push-notification

我是android的新手。我曾尝试过文档中给出的示例。但是我没有得到任何推送通知,只有我收到通知图标但没有内容和标题。任何人都可以帮助我清除??????

  1. 推送通知是否可以在模拟器中使用?
  2. 在此示例中,我发现一个类为“Resultactivity”。使用本的目的
                  类?
  3. 我已经给出了以下代码。

    package com.example.pushnotification;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.support.v4.app.NotificationCompat;
    import android.support.v4.app.TaskStackBuilder;
    import android.view.Menu;
    
    public class Pushactivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pushactivity);
    
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.notification_icon)
                .setContentTitle("Check Notification")
                .setContentText("This is to test push!");
    
        Intent resultIntent = new Intent(this, ResultActivity.class);
    
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(ResultActivity.class);
        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent =
                stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);
        NotificationManager mNotificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        int mId = 10;
        mNotificationManager.notify(mId, mBuilder.build());
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.pushactivity, menu);
        return true;
    }
    
    }
    

    提前致谢

6 个答案:

答案 0 :(得分:3)

当然会起作用。我使用gcm,它在模拟器和真实设备中工作。

您必须从Android sdk manager安装google云消息并使用gcm.jar。

这是您可以测试它的最佳教程。http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

答案 1 :(得分:1)

Will push notification works in emulator or not?

您可以在模拟器中测试Push Notification,这里是 Source ,在这里您可以找到在模拟器中显示Push Notification的步骤,您需要下载 gcm.jar

来自日食:

Window => Android SDK Manager =>额外=>适用于Android库的Google Cloud Messaging

In this sample i found a class as "Resultactivity". Purpose of using this class?

enter image description here

您可以在此处看到NotificationCompat.Builder图片,该图片用于显示Notification

访问此 Link 1Link 2 了解详情,当您点击Notification时,您将被重定向到ResultActivity

答案 2 :(得分:1)

检查 AndroidManifest.xml 文件。 (将 ** manifest-package ** 替换为您的包名称)

<uses-permission android:name="android.permission.INTERNET" />
<permission android:name="**manifest-package**.permission.C2D_MESSAGE"
        android:protectionLevel="signature"/>
<uses-permission android:name="**manifest-package**.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>

申请......

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

            <category android:name="**manifest-package**" />
        </intent-filter>
    </receiver>

</application>

答案 3 :(得分:0)

前几天我处理了gcm并使用了以下教程:

简单教程:http://fundroiding.wordpress.com/2012/06/29/google-cloud-messaging-for-android-gcm-simple-tutorial/

如果你需要一个可以使用推送的后端,那么我会推荐一个“BaaS”服务。这些服务通常都有预先安装的“推送模块”。 (示例:apiOmat,解析...)

答案 4 :(得分:0)

GCM将在运行Android 2.2 的Google API 的模拟器上运行。

  

它需要运行Android 2.2或更高版本的设备   已安装Google Play商店应用程序,或正在运行的模拟器   带有Google API的Android 2.2。但是,您不限于此   通过Google Play商店部署您的Android应用程序。

答案 5 :(得分:0)

我遇到了同样的问题,发现更正是这个问题:Clicking on Notification is not starting intended activity?

更正是改变线:

PendingIntent resultPendingIntent =
        stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);

PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,
                    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);