我正在尝试将深层链接与branch.io集成.但为了做到这一点.我需要提取SHA256证书指纹,将它们放在我的branch.io仪表板中.我该怎么做呢?我的证书是什么?关于如何完成这些工作的数据太少.
有什么方法可以读取依赖于 buildType 的常量${deepLinkHost}
?
debug -> deepLinkUri = http://link.debug/
staging -> deepLinkUri = http://link.staging/
release -> deepLinkUri= http://link/
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/navigation_home"
app:startDestination="@id/fragment_home">
<fragment
android:id="@+id/fragment_home"
android:name="..."
tools:layout="@layout/fragment_home">
<argument
android:name="token"
android:defaultValue="@null"
app:argType="string"
app:nullable="true" />
<deepLink app:uri="${deepLinkUri}/?code={token}" />
</fragment>
Run Code Online (Sandbox Code Playgroud)
这是之前通过 build.gradle 上的 manifestPlaceholders.deepLinkHost 和 AndroidManifest 中的活动深度链接来管理的,但是一旦 google 使用 1 Activity to N Fragments,我们如何使用导航组件来管理它?
我在应用中使用分支深层链接,通过社交媒体分享应用内容的链接.一切都工作得很好.
更新到iOS 11.2时,我遇到以下行为:
1)更新后,Universal Links仍然有效.
2)我卸载了应用程序并重新安装了它.
3)从那时起,所有链接始终在Safari中打开分支深度视图.
4)点击"打开应用程序",打开AppStore.
它并没有关系,其中应用我的链接点击(注,WhatsApp的,短信,脸谱,...),它始终是相同的行为.
通过点击右上角的"转到链接"按钮(当应用程序打开时)没有绕过 Universal Link .我在三种不同的设备(iPhone 5s,iPhone 6s,iPhone 7)上进行了测试.所有这些都导致了同样的结果.
我发现iOS 11 beta 2中有一个错误已在beta 3中修复(Ios 11.2 beta通用链接打开我的应用程序和Safari),但它可能已经重新出现了?!
任何人有相同的问题或解决方法吗?
在实现传参方案的过程中,在模块间的导航中,遇到了序列化错误。据我所知,Deeplinks 接受自定义参数类型,即 Parcelables 或 Serializable。
我使用的是最新版本的导航 2.2.0
错误信息:
java.lang.UnsupportedOperationException:Parcelables 不支持默认值。
我做错了什么还是仍在开发中?
这是一个简短的例子:
<fragment
android:id="@+id/sampleFragment"
android:name="com.testapp.app.samples.navigation.SampleFragment"
android:label="SampleFragment">
<argument
android:name="Args"
app:argType="com.testapp.navigation.SampleArgs" />
<deepLink app:uri="app://app/samples/navigation/SampleFragment?Args={Args}"/>
</fragment>
Run Code Online (Sandbox Code Playgroud)
@Parcelize
@Keep data class SampleArgs(
val text: String
) : NavArgs, Parcelable
Run Code Online (Sandbox Code Playgroud)
val x = SampleArgs("TEST")
val uri = Uri.parse("app://app/samples/navigation/SampleFragment?Args=$x")
navController.navigate(uri)
Run Code Online (Sandbox Code Playgroud)
我在这里发现了类似的东西Android Parcelable 不支持默认值 App Crash
这是我在堆栈上的第一篇文章,所以请保持温柔:)
编辑
这是答案:
我将 Angular App 从 v8 升级到 v9。该项目使用 Angular 8 和 moment.js 导入自定义 UI 库。
当我构建它时:
WARNING in Entry point '@myLib/catalogue' contains deep imports into
'/Users/xyz/Projects/forms-frontend/node_modules/moment/locale/de'.
This is probably not a problem, but may cause the compilation of entry points to be out of order.
Run Code Online (Sandbox Code Playgroud)
在@myLib/catalogue.js
库文件中(在 node_modules 文件夹中),moment.js DE 语言环境被导入如下:
import 'moment/locale/de';
Run Code Online (Sandbox Code Playgroud)
ERROR in Failed to compile entry-point @myLib/catalogue (es2015 as esm2015) due to compilation errors:
node_modules/@myLib/catalogue/fesm2015/catalogue.js:213:26 - error NG1010: Value at position 2 in the NgModule.imports …
Run Code Online (Sandbox Code Playgroud) 使用Chrome iOS应用时,Deeplinks工作正常.但是在safari中它停止工作并且它总是重定向到appstore页面,即使安装了应用程序,或者有时会弹出警报"safari无法打开页面因为地址无效".几天前一切都很完美.所以我猜这是在ios 9.2更新后发生的.对此有何解决方案?
UPDATE
我尝试过使用新手机(以前没有安装过哪个应用程序)并安装了应用程序.
深层链接适用于两种浏览器(Safari和Chrome).
如果你按下bnc.lt前进按钮,它会为Safari和Chrome打开App Store.
下次打开链接深层链接时:
换句话说,您仍然可以在点击状态栏中的bnc.lt前向链接后从Chrome打开应用.这是因为Chrome要求打开应用而不是应用商店.
对于Safari,我最终处于不可逆转状态,深层链接始终打开应用程序商店,而不是应用程序.
有太多深层链接(通用链接或应用链接)教程.但其中大多数都展示了如何在Android或IOS应用中启用它.此外还有付费云解决方案,但它们提供了许多功能.但是我在现实生活中面临三个主要问题:
我写了这个Q&A,这是我学习的结果(花了太多时间),以便有一个独特的,适用于所有案例的解决方案.
代码来自我的工作解决方案,但我删除了一些部分只是为了表明这个想法.如果存在一些编译问题,请按照算法编写自己的代码
这是解决方案,即使你知道一些步骤也要一步一步,因为代码中有技巧.还有一些解释在代码部分的注释行中,请阅读它们.
示例是使用最终的参数处理Android和IOS应用程序的深层链接http://example.com/v/,例如http://example.com/v/id-of-user?key=value.
1.配置Android
1.1将活动信息添加到AndroidManifest.xml文件中:
<activity
android:name=".appLinkHandlerActivity">
<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="example.com"
android:pathPrefix="/v/"
android:scheme="http" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!—this intent is needed to handle links to myapp://share, I will explain later why we need it -->
<data
android:host="share"
android:scheme="myapp" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
1.2创建名为appLinkHandlerActivity的活动,该活动将处理单击的链接
public class appLinkHandlerActivity extends AppCompatActivity {
/* assume that user is clicked http://example.com/v/my-user-id
actCode will be …
Run Code Online (Sandbox Code Playgroud) 我的应用程序中有一个WKWebView。我不使用UIWebView,因为出于某种奇怪的原因,它无法正确打开包含大量 JS 代码的网页。
当我点击带有自定义 url 方案 "scm://"的链接时,它什么都不做......
我的代码:
- (void)viewDidLoad {
// ...
WKWebViewConfiguration *configuration = [WKWebViewConfiguration new];
if ([configuration respondsToSelector:@selector(setDataDetectorTypes:)])
[configuration setDataDetectorTypes:WKDataDetectorTypeLink];
myWebView = [[WKWebView alloc] initWithFrame:webFrame configuration:configuration];
myWebView.navigationDelegate = self;
[self.view addSubview:myWebView];
}
#pragma mark - WKNavigationDelegate
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
NSURL *requestURL = navigationAction.request.URL;
UIApplication *app = [UIApplication sharedApplication];
if ([requestURL.scheme.lowercaseString isEqualToString:@"scm"] && [app canOpenURL:requestURL]) {
[app openURL:requestURL];
decisionHandler(WKNavigationActionPolicyCancel);
}
else
decisionHandler(WKNavigationActionPolicyAllow);
}
- (void)webView:(WKWebView …
Run Code Online (Sandbox Code Playgroud) 是否有REST API更新Firebase DynamicLink的Deep link属性?
在谷歌指南只显示程序创建一个短链接,但没有一次创建如何更新深层链接提。
从西里尔DD 编辑:
使用Firebase网站,可以更新动态链接,并且在控制台中查看网络选项卡时,它可以调用API https://firebasedurablelinks-pa.clients6.google.com/v1/updateDurableLink
,从而可以完全更新现有动态链接的属性。
但是然后我有两个问题:
https://firebasedynamiclinks.googleapis.com/v1/shortLinks
API 生成的链接,因此不会出现在Firebase控制台的链接列表中在AndroidManifest
我有
<activity android:name=".MainActivity">
<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="linhtestdeeplink"
android:scheme="app"/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
在 MainActivity
AppLinkData.fetchDeferredAppLinkData(this,
new AppLinkData.CompletionHandler() {
@Override
public void onDeferredAppLinkDataFetched(final AppLinkData appLinkData) {
// Process app link data
Log.i("TAG", "Deep link receive" + appLinkData);
}
}
);
Run Code Online (Sandbox Code Playgroud)
在Facebook
页面中,我测试了Deep Link之类的
我的应用收到了通知,当我点击通知时它将启动我的应用程序,但 appLinkData
始终null
.
我也发送,linhtestdeeplink://tripId=1
但它也是null.
任何帮助或建议将非常感谢.
我正在使用facebook sdk 4.5 compile 'com.facebook.android:facebook-android-sdk:[4,5)'
deeplink ×10
android ×4
deep-linking ×3
ios ×3
branch.io ×2
facebook ×2
androidx ×1
angular ×1
applinks ×1
custom-url ×1
firebase ×1
hyperlink ×1
ios11 ×1
navigation ×1
parcelable ×1
short ×1
wkwebview ×1