我可以使用Firebase来控制我的应用行为吗?

时间:2018-08-10 17:57:13

标签: firebase google-cloud-functions

前一段时间,我在Advanced Android上进行了速成班课程,该课程的讲师讲授了Firebase。虽然我不记得详细信息,但他说我们可以从Firebase控制台控制应用程序的行为(例如,通过调用Cloud函数?)。例如,然后我可以在我的应用中获取一个触发器,并作为响应,我可以根据以下方式决定是否向用户提供某些功能(例如从按钮中删除onClickListener):他们已经支付了项目价格或订阅费。​​
可以使用Firebase吗?

1 个答案:

答案 0 :(得分:0)

经过一些研究和实验,我能够在我的应用程序中实现此功能。
首先,您需要将Firebase Messaging添加到您的项目中。然后,创建FirebaseMessagingService的子类。在类内部,实现onMessageReceived,您可以在其中访问从服务器收到的消息:

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    private static final String TAG = MyFirebaseMessagingService.class.getSimpleName();

    @Override
    public void onNewToken(String s) {
        super.onNewToken(s);
        Log.d(TAG, "onNewToken: " + s);
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        Log.d(TAG, "onMessageReceived: " + remoteMessage.getData());
        Log.d(TAG, "onMessageReceived: activation: "+ remoteMessage.getData().get(Constants.ACTIVATION_KEY));
        boolean activation = Boolean.valueOf(remoteMessage.getData().get(Constants.ACTIVATION_KEY));

        //Save in preferences
        SharedPreferences prefs = getApplication().getSharedPreferences(Constants.PREFERENCE_FILE, MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean(Constants.ACTIVATION_KEY, activation);
        editor.apply();          
    }
}

确保将此服务添加到清单文件中:

<service android:name="me.mehdi.utils.MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

在Firebase控制台中,从左侧选择Cloud Messaging,然后点击“新消息”。撰写新邮件时,除了邮件文字和邮件标签外,您还会注意到“高级选项”部分。在高级选项下,您可以输入键值对并发送到从下拉菜单中选择的设备,最后点击发送消息。在onMessageReceived方法中,您可以读取键值对并更新应用的共享首选项以激活或停用某些功能。
enter image description here