2

I am trying to creating a dynamic link and when I am trying to debug the code it's calling the callback method addOnSuccessListener but after that it's not calling or we say it's skipping the method onSuccess() and I am not getting any clue why it's happening.

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 -> {

After this my debugger skip this code and it is not calling

 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) {

                        }
                    });

                });
    }

Please help me out..

  • try changing your `addOnSuccessListener(shortDynamicLink -> {` to `toaddOnSuccessListener{shortDynamicLink -> ` also your addOnSuccessListener needs the executor class that's why I think it skips it so change it to addOnSuccessListener(this,... –  Jun 02 '18 at 07:15
  • Thank you so much for your answer but I am doing it in fragment I put getActivity() as a executor class but still same problem occurs and there is no any method which starts from toaddOnSuccessListener{shortDynamicLink ->. – Divyank Vijayvergiya Jun 02 '18 at 07:20
  • aren't you passing your method with lambda expression?!I also don't see you creating any tasks like in the firebase doc `Task shortLinkTask` and then `.addOnCompleteListener(this, new OnCompleteListener() {` –  Jun 02 '18 at 07:26
  • Yes I am passing it with lambda expression only. I take help with this[link](https://firebase.google.com/docs/dynamic-links/use-cases/rewarded-referral) – Divyank Vijayvergiya Jun 02 '18 at 07:32
  • But that is for short link and that is a another method to create short links but I am following this method so it should be work. But I don't know why it's not calling onSuccess() – Divyank Vijayvergiya Jun 02 '18 at 07:34

1 Answers1

2

I get it solved it is very basic silly mistake I am doing actually link is not parsing in the code above because I have mentioned https two times in dynamic link and dynamic link domain after removing https from dynamic link domain I get it work.

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) {

                        }
                    });

                });
    }
  • Hello, can you help me? what are https://larky.funswitch.io/?invitedby= and "io.funswitch.funrooster" ? are those your package name ? Please let me know – Aniket-Shinde May 24 '19 at 19:18