RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-673193

Youra's questions

Martin Hope
Youra
Asked: 2025-01-29 16:51:49 +0000 UTC

没有通过 fcm 发送消息

  • 4

我正在尝试从 Firebase 控制台发送推送消息,但没有任何消息发送成功。

有这样一段代码:

package dem.corp.androidmessenger;

import static androidx.fragment.app.FragmentManager.TAG;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.messaging.FirebaseMessaging;

import java.util.HashMap;
import java.util.Map;

import dem.corp.androidmessenger.bottomnav.chats.ChatsFragment;
import dem.corp.androidmessenger.bottomnav.new_chat.NewChatFragment;
import dem.corp.androidmessenger.bottomnav.profile.ProfileFragment;
import dem.corp.androidmessenger.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

//fcm
        FirebaseMessaging.getInstance().getToken()
                .addOnCompleteListener(new OnCompleteListener<String>() {
                    @Override
                    public void onComplete(@NonNull Task<String> task) {
                        if (!task.isSuccessful()) {
                            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
                            return;
                        }
                        // Get new FCM registration token
                        String token = task.getResult();
                        // Log and toast
                        //String msg = getString(R.string.msg_token_fmt, token);
                        Log.d(TAG, "222 token = " + token);
                        Toast.makeText(MainActivity.this, token, Toast.LENGTH_SHORT).show();
                    }
                });  //END FCM


        if (FirebaseAuth.getInstance().getCurrentUser()==null){
            startActivity(new Intent(MainActivity.this, LoginActivity.class));
        }

        getSupportFragmentManager().beginTransaction().replace(binding.fragmentContainer.getId(), new ChatsFragment()).commit();
        binding.bottomNav.setSelectedItemId(R.id.chats);

        Map<Integer, Fragment> fragmentMap = new HashMap<>();
        fragmentMap.put(R.id.chats, new ChatsFragment());
        fragmentMap.put(R.id.new_chat, new NewChatFragment());
        fragmentMap.put(R.id.profile, new ProfileFragment());

        binding.bottomNav.setOnItemSelectedListener(item -> {
            Fragment fragment = fragmentMap.get(item.getItemId());

            getSupportFragmentManager().beginTransaction().replace(binding.fragmentContainer.getId(), fragment).commit();

            return true;
        });
    }
}

从此代码中我获得一个令牌并将该令牌输入到 Firebase 控制台。 在此处输入图片描述

我没有在清单中配置任何东西。告诉我,为什么我收不到来自 FCM 的消息?

在 LogCat 中它说:

  ndroidmessenger         dem.corp.androidmessenger            W  Accessing hidden method Landroid/os/WorkSource;->add(I)Z (unsupported,test-api, reflection, allowed)
2025-02-01 12:53:26.688  6595-6820  ndroidmessenger         dem.corp.androidmessenger            W  Accessing hidden method Landroid/os/WorkSource;->add(ILjava/lang/String;)Z (unsupported,test-api, reflection, allowed)
2025-02-01 12:53:26.688  6595-6820  ndroidmessenger         dem.corp.androidmessenger            W  Accessing hidden method Landroid/os/WorkSource;->get(I)I (unsupported, reflection, allowed)
2025-02-01 12:53:26.688  6595-6820  ndroidmessenger         dem.corp.androidmessenger            W  Accessing hidden method Landroid/os/WorkSource;->getName(I)Ljava/lang/String; (unsupported, reflection, allowed)
2025-02-01 12:53:26.718  6595-6824  FirebaseMessaging       dem.corp.androidmessenger            W  Missing Default Notification Channel metadata in AndroidManifest. Default value will be used.
2025-02-01 12:53:26.727  6595-6824  Compatibil...geReporter dem.corp.androidmessenger            D  Compat change id reported: 160794467; UID 10192; state: ENABLED

并且文件显示如下内容: 在此处输入图片描述 Android Stdio 建议我使用管理器更改文件:我选中了所有框,但文件没有任何更改: 在此处输入图片描述

同时,我在宣言中补充了以下数据:

  <meta-data
        android:name="default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="high_importance_channel" />

救命,为什么我收不到 fcm 消息?

java
  • 1 个回答
  • 52 Views
Martin Hope
Youra
Asked: 2025-01-27 13:21:08 +0000 UTC

无法使用拆分函数拆分字符串[关闭]

  • 3
关闭。这个问题与主题无关。目前不接受对此问题的答复。

该问题是由无法再重现的问题或打字错误引起的。尽管类似的问题可能适合在此网站上提出,但该问题的解决方案不太可能对未来的访问者有所帮助。通常,您可以在发布问题之前编写并测试一个最小程序来重现问题,从而避免此类问题。

9 天前关闭。

改进问题

你能帮忙吗?在拆分(用逗号将字符串分成数组)时,会出现一些错误信息。以下是我尝试拆分成数组的变量 chatsStr 的内容:

chatsStr-ODqP1-1G1AtcwnrDVLk, ZqnkGaeyk3UkRLRJH8Qh1tQiF7d2

日志中显示的内容如下:

chatsIds[Ljava.lang.String;@86a42f3

激活码如下:

package dem.corp.androidmessenger.bottomnav.chats;

import static androidx.fragment.app.FragmentManager.TAG;

import androidx.fragment.app.Fragment;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;

import dem.corp.androidmessenger.chats.Chat;
import dem.corp.androidmessenger.chats.ChatsAdapter;
import dem.corp.androidmessenger.databinding.FragmentChatsBinding;
import dem.corp.androidmessenger.utils.ChatUtil;

public class ChatsFragment extends Fragment {
    private FragmentChatsBinding binding;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        binding = FragmentChatsBinding.inflate(inflater, container, false);

        loadChats();

        return binding.getRoot();
    }

    @SuppressLint("RestrictedApi")
    private void loadChats(){

        Log.w(TAG, "Error getting documents. 222");
        ArrayList<Chat> chats = new ArrayList<>();

        String uid = Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid();
        Log.w(TAG, "Error getting documents. 222 uid =" + uid);
        FirebaseDatabase.getInstance().getReference().addListenerForSingleValueEvent(new ValueEventListener() {
            @SuppressLint("RestrictedApi")
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                String chatsStr = Objects.requireNonNull(snapshot.child("Users").child("ZqnkGaeyk3UkRLRJH8Qh1tQiF7d2").child("chats").getValue()).toString();
                Log.w(TAG, "Error getting documents. 2222 chatsStr" + chatsStr);

                String[] chatsIds = chatsStr.split(",");
                Log.w(TAG, "Error getting documents. 2222 chatsIds" + chatsIds);

                //ChatUtil.createChat("ZqnkGaeyk3UkRLRJH8Qh1tQiF7d2");
               // FirebaseDatabase.getInstance().getReference().child("Users").child("mdlfnx5Bo4dbpKOjwmUxaiyJzAY2")
                 //       .child("chats").setValue(chatsUpd);
                String uid = Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid();
                Log.w(TAG, "Error getting documents. 2222 chats uid=" + uid);
                HashMap<String, String> chatInfo = new HashMap<>();
                chatInfo.put("user1", uid);
                chatInfo.put("user2", "1Sx2FCTKDcdfjhztPtTbWgSxFZP2");

                String chatCurrentId = "ZqnkGaeyk3UkRLRJH8Qh1tQiF7d2";
               // String chatId = generateChatId(uid, user.uid);
                FirebaseDatabase.getInstance().getReference().child("Chats").child(chatCurrentId)
                        .setValue(chatInfo);

                if (chatsIds.length==0) return;

                for (String chatId : chatsIds){
                   // DataSnapshot chatSnapshot = snapshot.child("Chats").child(chatId);
                    DataSnapshot chatSnapshot = snapshot.child("Chats").child("ZqnkGaeyk3UkRLRJH8Qh1tQiF7d2");
                    String userId1 = Objects.requireNonNull(chatSnapshot.child("user1").getValue()).toString();
                    Log.w(TAG, "Error getting documents. 2222 userId1=" + userId1);
                    String userId2 = Objects.requireNonNull(chatSnapshot.child("user2").getValue()).toString();
                    Log.w(TAG, "Error getting documents. 2222 userId2=" + userId2);


                    String chatUserId = (uid.equals(userId1)) ? userId2 : userId1;
                    Log.w(TAG, "Error getting documents. 2222 chatUserId=" + chatUserId);
                    String chatName = Objects.requireNonNull(snapshot.child("Users").child(chatUserId).child("username").getValue()).toString();

                    Chat chat = new Chat(chatId, chatName, userId1, userId2);
                    chats.add(chat);
                }

                binding.chatsRv.setLayoutManager(new LinearLayoutManager(getContext()));
                binding.chatsRv.setAdapter(new ChatsAdapter(chats));
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                Toast.makeText(getContext(), "Failed to get user chats", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

告诉我,发生什么事了?

java
  • 1 个回答
  • 37 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5