App Links(APP关联)

 

前言

2015年5月28日,Google I/O大会上正式推出Android M(android6.0 API级别23),其中新增了一个特性叫AppLinks,它可以加强软件间的关联,可以把触屏端的流量带到移动端来。

Android App Links具有以下优势:

  • 安全且具体: Android App Links使用链接到您拥有的网站域的HTTP URL,因此没有其他应用可以使用您的链接。Android App Links的要求之一是您通过我们的网站关联方法验证您所在域的所有权。
  • 无缝的用户体验:由于Android App Links对您网站和应用中的相同内容使用单个HTTP URL,因此未安装应用程序的用户只需访问您的网站而不是应用程序 - 没有404,没有错误。
  • Android Instant Apps支持:使用Android Instant Apps,您的用户无需安装即可运行您的Android应用。要为您的Android应用添加即时应用支持,请设置Android应用链接并访问g.co/InstantApps
  • 通过Google搜索吸引用户:用户可以通过在移动浏览器,Google搜索应用,Android屏幕搜索或Google智能助理中点击Google中的网址,直接在应用中打开特定内容。

 官方链接:https://developer.android.com/training/app-links/

 

接下来我们就讲讲如何把App Links功能应用到我们的程式

1.首先在配置文件AndroidManifest.xml中声明ApplinksActivity

<activity
    android:name="这里填写包名.ApplinksActivity"
    android:alwaysRetainTaskState="true"
    android:launchMode="singleTask"
    android:noHistory="true"
    android:theme="@android:style/Theme.Translucent.NoTitleBar">
    <intent-filter android:autoVerify="true">
        <data
            android:host="这里填写域名"
            android:scheme="http" />
        <data
            android:host="这里填写域名"
            android:scheme="https" />
         ....
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <action android:name="android.intent.action.VIEW" />
    </intent-filter>
</activity>

2.然后在ApplinksActivity.java中处理链接跳转逻辑

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    Uri uri = intent.getData();
    String host = uri.getHost();
    String path = uri.getPath();
    if (host.equals("这里填写域名")){
       if(path.equals("链接路径")) {
          // 跳转app指定A界面
         } else if(path.equals("链接路径")) {
          // 跳转app指定B界面
         } else {
           ...
       }
    }
}

 

以上为app端的配置,这个时候用户使用google浏览器访问了你配置声明好的域名时,它会弹出对话框询问你开启方式,如果用户点击选中了你的客户端时,那么它可以直接把你在浏览器中访问的链接带到app中进行操作。

如果你不希望弹出这个对话框,而是希望用户直接进入到你的app中,那么你还需要这两步操作进行认证:

1.生成assetlinks.json文件,

2.把这个文件上传到这里→  https://这里填写域名/.well-known/assetlinks.json

assetlinks.json文件格式:

  [{
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target" : { "namespace": "android_app",
      "package_name": "这里填写应用程式的包名",
       "sha256_cert_fingerprints": ["这里填写SHA256证书指纹"] }
  }]

SHA256证书指纹获取方式:

在Androidstudio的Terminal下输入: keytool -list -v -keystore 这里填写应用程式签名文件的完整路径

 

AppLinks更多信息,请参阅安卓官方链接:https://developer.android.com/training/app-links/verify-site-associations

 

### 如何生成支持 Universal LinksApp Uploader 为了创建一个支持 Universal Links 的应用上传器 (app uploader),开发者需遵循一系列特定配置,确保链接能够无缝导向至移动应用程序而非网页版。当涉及到具体实现时,对于 iOS 应用而言,Universal Links 是一种让 Safari 浏览器或其他浏览器可以直接打开原生应用而不是访问网站的技术。 #### 配置域名关联文件 服务器端需要设置好苹果公司规定的 `.well-known/apple-app-site-association` 文件路径[^1]。此 JSON 文件定义了哪些 URL 路径应该被重定向到应用内处理,并且不带扩展名。该文件应放置于 HTTPS 安全连接下的根目录下指定位置,例如 `https://www.example.com/.well-known/apple-app-site-association`。 ```json { "applinks": { "apps": [], "details": [ { "appID": "TEAMID.com.example.app", "paths": [ "/path/to/resource", "/another/path/*"] } ] } } ``` 上述代码片段展示了如何通过 `apple-app-site-association` 文件声明哪些 URL 可以触发启动对应的应用程序实例并传递参数给它。注意这里的 TEAMID 和包名应当替换为实际开发团队 ID 和应用的 Bundle Identifier。 #### Xcode 设置 在项目的 entitlements 文件中启用 Associated Domains 功能,并添加相应的域作为键值对,比如: ```xml <key>com.apple.developer.associated-domains</key> <array> <string>webcredentials:example.com</string> <string>activitycontinuation:example.com</string> <string>applinks:www.example.com</string> </array> ``` 这一步骤告知操作系统本应用有权响应来自这些已注册域名的 universal link 请求。 完成以上两步之后,每当用户点击匹配模式的一个链接时,iOS 设备将会尝试查找安装的应用版本;如果找到,则直接跳转进入应用内部页面而不经过 Safari 加载过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值