onSuccess 方法未在 android 中调用 firebase

Posted

技术标签:

【中文标题】onSuccess 方法未在 android 中调用 firebase【英文标题】:onSuccess method not calling in firebase in android 【发布时间】:2018-06-02 06:41:14 【问题描述】:

我正在尝试创建一个动态链接,当我尝试调试代码时,它正在调用回调方法 addOnSuccessListener 但之后它没有调用,或者我们说它正在跳过方法 onSuccess() 我不知道为什么它正在发生。

private void firebaseInvite() 
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        String uid = user.getUid();
        String url = "https://larky.funswitch.io/?invitedby=" + uid;
        FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(url))
                .setDynamicLinkDomain("https://fmu3k.app.goo.gl")
                .setandroidParameters(
                        new DynamicLink.AndroidParameters.Builder("io.funswitch.funrooster")
                                .setMinimumVersion(5)
                                .build())
                .buildShortDynamicLink()
                .addOnSuccessListener(shortDynamicLink -> 

在这之后我的调试器跳过了这段代码,它没有调用

 mInvitationUrl = shortDynamicLink.getShortLink();
                    mDatabase.child("Name").addListenerForSingleValueEvent(new ValueEventListener() 
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) 
                            String referrerName = dataSnapshot.getValue(String.class);
                            String subject = String.format("%s wants you to play MyExampleGame!", referrerName);
                            String invitationLink = mInvitationUrl.toString();
                            String msg = "Let's play MyExampleGame together! Use my referrer link: "
                                    + invitationLink;
                            String msghtml = String.format("<p>Let's play MyExampleGame together! Use my "
                                    + "<a href=\"%s\">referrer link</a>!</p>", invitationLink);

                            Intent intent = new Intent(Intent.ACTION_SENDTO);
                            intent.setData(Uri.parse("mailto:")); // only email apps should handle this
                            intent.putExtra(Intent.EXTRA_SUBJECT, subject);
                            intent.putExtra(Intent.EXTRA_TEXT, msg);
                            intent.putExtra(Intent.EXTRA_HTML_TEXT, msgHtml);
                            if (intent.resolveActivity(getActivity().getPackageManager()) != null) 
                                startActivity(intent);
                            
                        

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) 

                        
                    );

                );
    

请帮帮我..

【问题讨论】:

尝试将您的 addOnSuccessListener(shortDynamicLink -&gt; 更改为 toaddOnSuccessListenershortDynamicLink -&gt; 也您的 addOnSuccessListener 需要执行程序类,这就是为什么我认为它会跳过它所以将其更改为 addOnSuccessListener(this,... 非常感谢您的回答,但我在片段中这样做,我将 getActivity() 作为执行程序类,但仍然出现同样的问题,并且没有任何从 toaddOnSuccessListenershortDynamicLink -> 开始的方法. 你不是用 lambda 表达式传递你的方法吗?!我也没有看到你在 firebase 文档 Task&lt;ShortDynamicLink&gt; shortLinkTask 然后 .addOnCompleteListener(this, new OnCompleteListener&lt;ShortDynamicLink&gt;() 中创建任何任务 是的,我只使用 lambda 表达式传递它。我需要帮助link 但这是针对短链接的,这是另一种创建短链接的方法,但我正在遵循这种方法,所以它应该可以工作。但我不知道为什么它不调用 onSuccess() 【参考方案1】:

我得到它解决了这是一个非常基本的愚蠢错误我正在做的实际上链接没有在上面的代码中解析因为我在动态链接和动态链接域中提到了两次 https 在从动态链接域中删除 https 后我得到它的工作.

private void firebaseInvite() 
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        String uid = user.getUid();
        String url = "https://larky.funswitch.io/?invitedby=" + uid;
        FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(url))
                .setDynamicLinkDomain("fmu3k.app.goo.gl")
                .setAndroidParameters(
                        new DynamicLink.AndroidParameters.Builder("io.funswitch.funrooster")
                                .setMinimumVersion(5)
                                .build())
                .buildShortDynamicLink()
                .addOnSuccessListener(shortDynamicLink -> 

 mInvitationUrl = shortDynamicLink.getShortLink();
                    mDatabase.child("Name").addListenerForSingleValueEvent(new ValueEventListener() 
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) 
                            String referrerName = dataSnapshot.getValue(String.class);
                            String subject = String.format("%s wants you to play MyExampleGame!", referrerName);
                            String invitationLink = mInvitationUrl.toString();
                            String msg = "Let's play MyExampleGame together! Use my referrer link: "
                                    + invitationLink;
                            String msgHtml = String.format("<p>Let's play MyExampleGame together! Use my "
                                    + "<a href=\"%s\">referrer link</a>!</p>", invitationLink);

                            Intent intent = new Intent(Intent.ACTION_SENDTO);
                            intent.setData(Uri.parse("mailto:")); // only email apps should handle this
                            intent.putExtra(Intent.EXTRA_SUBJECT, subject);
                            intent.putExtra(Intent.EXTRA_TEXT, msg);
                            intent.putExtra(Intent.EXTRA_HTML_TEXT, msgHtml);
                            if (intent.resolveActivity(getActivity().getPackageManager()) != null) 
                                startActivity(intent);
                            
                        

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) 

                        
                    );

                );
    

【讨论】:

您好,可以帮帮我吗? larky.funswitch.io/?invitedby= 和 "io.funswitch.funrooster" 是什么?这些是你的包裹名吗?请告诉我

以上是关于onSuccess 方法未在 android 中调用 firebase的主要内容,如果未能解决你的问题,请参考以下文章

在 GWT 异步回调中,如何在 onSuccess 中处理相同的返回类型?

Twitter Composer 回调 OnSuccess/OnFailure Fabric

为 Google 登录调用 data-onsuccess 方法

如何使用 Ajax.BeginForm OnSuccess 和 OnFailure 方法?

platform.ready() 方法未在使用 ionic 的 Android 设备中触发

Redux-thunk 异步请求处理 onSuccess 和 onError 的最佳方法是啥?