当有人单击Firebase动态链接时,如何在选择器应用程序中显示我的应用程序? [英] How to show my app in chooser apps when someone clicks firebase dynamic link?

查看:75
本文介绍了当有人单击Firebase动态链接时,如何在选择器应用程序中显示我的应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果有人单击动态链接,我想在选择器应用程序中显示我的应用程序,我的android清单文件应该如何? URL前缀类似于-
https://testapp.page.link 。在那个阶段,如果有人单击链接,则它首先打开浏览器,然后重定向到我的应用程序。但我想在选择器应用列表中显示我的应用。此时,我的清单文件如下:-

How should be my android manifest file if I want to show my app in the chooser apps if someone clicks the dynamic link? The URL prefix is like - https://testapp.page.link. At that stage if someone clicks the link then it first opens the browser then it redirects to my app. But I want to show my app in the chooser app list. At this time my manifest file is like follows-

 <activity android:name=".extraActivities.DynamicLinkActivity">

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="test.com"
                android:pathPattern="https://testapp.page.link*"
                android:scheme="https"
               />


        </intent-filter>

    </activity>


推荐答案

我们需要在清单文件中编写意图过滤器如下-

We need to write intent-filter in the manifest file as follows-

<intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="testapp.com"
                android:pathPattern=".*"
                android:scheme="https" />

            <data
                android:host="testapp.page.link"
                android:scheme="https"
                android:pathPattern=".*"/>

        </intent-filter>

其中 testapp.page.link实际上是显示在该文件左上角的URL前缀Firebase动态链接控制台。而 testapp.com是任何链接的第一部分。例如: https://testapp.com/user_profile?id= Zsdsdjwenncsdmsd。从该链接,我们可以在动态链接的接收端将用户ID提取为 Zsdsdjwenncsdmsd。下面显示了一个完整的示例-

Where "testapp.page.link" is the actually the URL prefixes shown at the top left corner of Firebase dynamic link console. And "testapp.com" is the first part of any link. Eg: https://testapp.com/user_profile?id="Zsdsdjwenncsdmsd". From this link, we can extract the user Id as "Zsdsdjwenncsdmsd" at the receiving end of the dynamic link. A complete example is shown below-

如果有人单击共享按钮,将创建动态链接-

If anyone clicks share button this will create the dynamic link-

shareBtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        shareProgressBar.setVisibility(View.VISIBLE);
                        Task<ShortDynamicLink> shortDynamicLinkTask = buildDeepLink(getString(R.string.grp_post_link)+postsModel.getPostId()+"&groupKey="+postsModel.getGroupKey()+"&groupName="+ dataSnapshot.getValue(String.class));

                        shortDynamicLinkTask.addOnCompleteListener(new OnCompleteListener<ShortDynamicLink>() {
                            @Override
                            public void onComplete(@NonNull Task<ShortDynamicLink> task) {

                                grpPostsViewHolder.shareProgressBar.setVisibility(View.GONE);

                                if(task.isSuccessful()){
                                    Uri uri = task.getResult().getShortLink();
                                    share(dataSnapshot.getValue(String.class), uri.toString());
                                }else {
                                    Toast.makeText(context, "Can't create link", Toast.LENGTH_SHORT).show();
                                }

                            }
                        });

                        shortDynamicLinkTask.addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                shareProgressBar.setVisibility(View.GONE);
                            }
                        });

动态链接创建器功能和共享功能-

The dynamic link creator function and share function-

 /*-----------------------------------------------------------------------------*/

private Task<ShortDynamicLink> buildDeepLink(String deepLink) {

    String uriPrefix = getString(R.string.dynamic_links_uri_prefix);

    return FirebaseDynamicLinks.getInstance().createDynamicLink()
            .setLink(Uri.parse(deepLink))
            .setDomainUriPrefix(uriPrefix)
            .setNavigationInfoParameters(new DynamicLink.NavigationInfoParameters.Builder()
                    .build())
            .setAndroidParameters(new DynamicLink.AndroidParameters.Builder()
                    .setMinimumVersion(3)
                    .build())
            .buildShortDynamicLink();

}

/*-----------------------------------------------------------------------------*/

private void share(String name, String deepLink) {

    String message = "Find "+name+" on SelfieLe - link: "+deepLink;
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_TEXT, message);
    startActivity(intent);
}

/*---------------------------------------------------------------------------------*/

字符串资源是-

R.string .grp_post_link和R.string.dynamic_links_uri_prefix:

R.string.grp_post_link, and R.string.dynamic_links_uri_prefix:

<string name="user_profile_link">https://testapp.com/user_profile?id=</string>
<string name="dynamic_links_uri_prefix">https://testapp.page.link</string>

在接收端,我们可以按以下方式提取postId,groupKey等

At receiving end we can extract postId, groupKey etc as follows

  FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent()).addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
        @Override
        public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {

            if (pendingDynamicLinkData != null) {
                deepLink = pendingDynamicLinkData.getLink();
            }

            if (deepLink != null) {

               getGrpPost(deepLink.getQueryParameter("id"), deepLink.getQueryParameter("groupKey"),  deepLink.getQueryParameter("groupName"));


            }else {
                Toast.makeText(DynamicLinkActivity.this, "Can't find link", Toast.LENGTH_SHORT).show();
            }

        }
    }).addOnFailureListener(this, new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Toast.makeText(DynamicLinkActivity.this, "Can't find link", Toast.LENGTH_SHORT).show();
        }
    });

getGroupPost();如下

The getGroupPost(); is as follows

 private void getGrpPost(String id, String groupKey, final String groupName) {
    //Do what you want
 }

这篇关于当有人单击Firebase动态链接时,如何在选择器应用程序中显示我的应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆