代码之家  ›  专栏  ›  技术社区  ›  Sina Khorshidian

手动启动FireBase服务

  •  0
  • Sina Khorshidian  · 技术社区  · 7 年前

    我正在创建一个包含FireBase消息服务的应用程序。
    我将服务添加到清单:

     <service android:name="xxx.xxx.MyFirebaseInstanceIdService">
                <intent-filter>
                    <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
                </intent-filter>
            </service>
    
     <service android:name="xxx.xxx.MyFireBaseMessagingService">
                <intent-filter>
                    <action android:name="com.google.firebase.MESSAGING_EVENT" />
                </intent-filter>
            </service>
    

    public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
    
        @Override
        public void onTokenRefresh() {
            super.onTokenRefresh();
            String recent_token = FirebaseInstanceId.getInstance().getToken();
            SharedPreferences sp = getSharedPreferences("mypref", 0);
            SharedPreferences.Editor editor = sp.edit();
            editor.putString("token", recent_token);
            editor.apply();
        }
    }
    

    和消息传递类:

    public class MyFireBaseMessagingService extends FirebaseMessagingService {
    
    
        @Override
        public void onMessageReceived(final RemoteMessage remoteMessage) {
            super.onMessageReceived(remoteMessage);
            Intent intent = new Intent(MyFireBaseMessagingService.this, AdvCreateActivity.class);
            intent.putExtra("mode","notification");
            intent.putExtra("text",remoteMessage.getNotification().getBody());
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent = PendingIntent.getActivity(MyFireBaseMessagingService.this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(MyFireBaseMessagingService.this);
            notificationBuilder.setContentTitle(remoteMessage.getNotification().getTitle());
            notificationBuilder.setContentText(remoteMessage.getNotification().getBody());
            notificationBuilder.setAutoCancel(true);
            notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
            notificationBuilder.setContentIntent(pendingIntent);
            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.notify(0,notificationBuilder.build());
        }
    }
    


    我的问题是: 如何在应用程序启动后手动启动firebase服务?(我不希望firebase服务在启动应用程序时启动!!!)

    1 回复  |  直到 6 年前
        1
  •  1
  •   DKV    7 年前

    如果您想获取fcm id,请调用以下方法。

    try {
            String refreshedToken = FirebaseInstanceId.getInstance().getToken();
            Log.d("Firbase id login", "Refreshed token: " + refreshedToken);
        } catch (Exception e) {
            e.printStackTrace();
        }