Firebase在应用运行时没有发送通知?

时间:2017-04-09 08:31:46

标签: android firebase android-webview

我在这里搜索了这些问题,但我发现的只是一个问题,当应用程序没有运行时。

就我而言,在我从Firebase控制台发送文本通知后,应用程序会在以下情况下收到通知:

  1. 该应用程序被杀死(根本没有运行)
  2. 应用程序在后台(但不是打开/隐藏)。
  3. 应用程序已打开,但手机屏幕本身处于" off"状态。 (我必须单击硬按钮才能再次点亮屏幕,然后滑动它以查看正在打开的应用程序。)
  4. 我的问题是: 如果应用程序处于打开状态(屏幕打开且应用程序处于活动状态时 - 我触摸屏幕以便不让屏幕熄灭),我没有收到通知是否正常?

    先谢谢你。

1 个答案:

答案 0 :(得分:0)

在Firebase中推送通知:

当您的应用被杀并在后台时,您的o方法将不会被调用。根据文档,您的通知将在系统托盘中。您可以从默认启动器类中检索通知。

var startIndex = $scope.currentPage * $scope.pageSize;
var endIndex = ($scope.currentPage * $scope.pageSize) + $scope.pageSize;
$scope.resultsToDelete = $scope.results.slice( startIndex, endIndex );

我的启动器类是Splashscreen,当应用程序被杀死时,您可以从捆绑包中检索通知数据。

SplashScreen.Java

onMessageReceived

当您的应用处于有效状态且前置状态时,您将收到推送通知,您的<application android:name=".AppController" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".view.SplashScreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 将被调用。

MyFirebaseMessagingService.Java

public class SplashScreen extends AppCompatActivity {
    String messageBody, notificationtype, id, title;
    Context mContext;

/**
 * Called when the activity is first created.
 */
@Override
public void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    mContext = SplashScreen.this;
    if (getIntent().getExtras() != null && this.getIntent().getExtras().containsKey("title")) {

        Bundle b = getIntent().getExtras();
        String someData = b.getString("title");
        String id = b.getString("id");
        String notificationtype = b.getString("notification_type");
        String message = b.getString("message");
        //   Log.e("firebaseid", id);
        //    Log.e("firebase", someData);
        //   Log.e("firebase", notificationtype);
        Intent i = new Intent(SplashScreen.this, NotificationMessage.class);
        i.putExtra("title", someData);
        i.putExtra("id", id);
        i.putExtra("notificationtype", notificationtype);
        i.putExtra("messageBody", message);
        startActivity(i);
        finish();
    } 
}