我目前正在尝试使用 Firebase 动态链接(深层链接)。应用程序的核心应在社交媒体上共享链接。
我已成功创建短链接(200 OK),并将链接共享到 G+ 和 Facebook。但有一个问题
我正在使用 Android 开发人员网站上建议的 http 方案:
<activity android:name=".LinkActivity">
<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:scheme="http" android:host="..."/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
那么如何正确使用 Firebase 动态链接与 Facebook 应用程序呢?
我想使用 Firebase 动态链接创建深层链接。
我已阅读文档,为了使用 REST API 创建深层链接,需要使用 JSON 对象创建 HTTP POST 请求,如下所示:
{"dynamicLinkInfo":
{
"dynamicLinkDomain": "abc123.app.goo.gl",
"link": "https://example.com/",
"androidInfo": {
"androidPackageName": "com.example.android"
},
"iosInfo": {
"iosBundleId": "com.example.ios"
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 我想在链接内向应用程序发送附加数据。我该怎么做?谢谢!
assetlinks.json如果我使用 firebase 为动态链接提供的域,如何修改?它是可以访问的,目前它返回空数组:
firebase firebase-dynamic-links android-deep-link android-app-links
我想在我的 Ionic 4 应用程序中使用Cordova Firebase Dynamiclinks插件:https://github.com/chemerisuk/cordova-plugin-firebase-dynamiclinks#installation。
也有一个Ionic-native-pluginnpm install @ionic-native/firebase-dynamic-links用法:和用法:
import { FirebaseDynamicLinks } from '@ionic-native/firebase-dynamic-links/ngx';
constructor(private firebaseDynamicLinks: FirebaseDynamicLinks) { }
...
this.firebaseDynamicLinks.onDynamicLink()
.subscribe((res: any) => console.log(res), (error:any) => console.log(error));
Run Code Online (Sandbox Code Playgroud)
问题是:我想使用Cordova Firebase DynamiclinkscreateDynamicLink(parameters)插件中可用的方法,但Ionic-native-plugin说
类型“FirebaseDynamicLinks”上不存在属性“createDynamicLink”。
因此,我需要直接使用Cordova Firebase Dynamiclinks,并且我尝试像这样使用它
import { cordova } from '@ionic-native/core';
...
cordova.plugins.firebase.dynamiclinks.createDynamicLink({
link: "https://google.com"
}).then(function(url) {
console.log("Dynamic link was created:", url);
});
Run Code Online (Sandbox Code Playgroud)
但出现错误
类型“(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | any[]) => …
我的网站托管在 Firebase 中,没有任何问题。我还有一个匹配的 iOS 应用程序,它成功使用 Firebase 动态链接(向 plist 文件添加密钥、权利...)以及配置的通用链接(通过 Firebase)到该网站。我也为动态链接设置了这个自定义域。工作很漂亮但是...
Firebase 正确生成apple-app-site-association 文件(在我的托管网站中):
{
"applinks": {
"apps": [],
"details": [{
"appID": "xxxxxxxxxxxxxxx",
"paths": ["NOT /_/*", "/*"]
}]
}
}
Run Code Online (Sandbox Code Playgroud)
但这与我的整个网站相匹配 - >没有定义路径。
我只想匹配格式的通用链接mydomain.com/link how我可以这样做吗?
如何告诉 Firebase 生成不同的 apple-app-site-association 文件?
使用 Firebase 动态链接,我希望能够单击链接以打开 iOS 应用程序。
该应用程序正在开发中,尚未在 AppStore 上架。
我是一边看文档一边设置的,但是即使点击链接启动了应用程序,也不会调用AppDelegate中的应用程序(_:continue:restoreHandler:)方法。
我按照以下步骤进行设置。有什么问题吗??
将“pod 'Firebase / DynamicLinks'”添加到 Podfile 并安装
打开 .xcworkspace 文件
创建动态链接“ https://XXXX.page.link/test ”
访问“ https://XXXX.page.link/apple-app-site-association ”
{"applinks":{"apps":[],"details":[{"appID":"XXXXXXX.[Bundle ID]","paths":["NOT /_/ ","/ "]}] }}
如下实现 AppDelegate
import UIKit
import Firebase
import FirebaseDynamicLinks
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure()
return true
}
// MARK: UISceneSession Lifecycle
func application(_ application: UIApplication, …Run Code Online (Sandbox Code Playgroud)我已经照着指示从官方react-native-firebase文件和一切,按照指示,工作正常。
我的理解是,我应该能够在 Firebase 动态链接控制台中创建如下所示的链接:https://myapp.page.link/offer?offerid=123456并且能够offerid在我的应用中接收参数。但是,当我单击该链接(在 iOS 模拟器、Android 模拟器和真实设备上)时,应用程序会打开,但我只得到一个包含以下数据的链接:
Received initial link {"minimumAppVersion": null, "url": "https://mysite.co/offers"}
Run Code Online (Sandbox Code Playgroud)
没有附加查询字符串参数。我在 Firebase 动态链接配置中遗漏了什么吗?或者在我的实现中react-native-firebase没有包含在上面链接的文档中?或者这实际上是不可能的?
是一个 React Native 应用程序,我使用 @react-native-firebase/dynamic-links 版本 7.1.0 (rnFirebase)。在 Android 上我的动态链接工作正常。在带有 firebase 的 ios 上,测试链接可以正常工作(myUrl.page.link),但是使用经过验证的前缀 url(myUrl)应用程序会打开,但我的函数dynamicLinks().getInitialLink()返回null。(我已在 xcode 中的关联域上正确添加了 url)
我创建了链接
const link = await dynamicLinks().buildShortLink(
{
link: encodeURI(
`myUrl/${list.generatedString}`
),
domainUriPrefix: 'myUrl',
analytics: {
campaign: 'banner'
},
navigation: {
forcedRedirectEnabled: false,
},
ios: {
bundleId: 'com.runeapp.gift-it',
// customScheme: 'giftit',
appStoreId: '1503678456'
},
android: {
packageName: 'com.runeapp.giftit'
}
},
'SHORT'
);
Run Code Online (Sandbox Code Playgroud)
我想知道这个问题是否是由于该应用程序尚未在应用程序商店发布而导致的。
有人有什么想法吗?谢谢
我在 Flutter 应用程序中集成了 Firebase Dynamic 链接,以打开应用程序用户并将其导航到应用程序中的特定屏幕。
首先,我在 pubspec.yaml 文件中添加了以下插件:
firebase_dynamic_links: ^5.0.5
Run Code Online (Sandbox Code Playgroud)
然后,我创建了一个单独的类来处理相关的内容,如下所示:
class DynamicLinkService {
late BuildContext context;
FirebaseDynamicLinks dynamicLinks = FirebaseDynamicLinks.instance;
Future<void> initDynamicLinks(BuildContext context) async {
this.context = context;
dynamicLinks.onLink.listen((dynamicLinkData) {
var dynamicLink=dynamicLinkData.link.toString();
if (dynamicLink.isNotEmpty &&
dynamicLink.startsWith(ApiConstants.baseUrl) &&
dynamicLink.contains("?")) {
//Getting data here and navigating...
...
...
...
}
}).onError((error) {
print("This is error >>> "+error.message);
});
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我在我的主屏幕中初始化深层链接,如下所示:
final DynamicLinkService _dynamicLinkService = DynamicLinkService();
Run Code Online (Sandbox Code Playgroud)
然后调用下面的方法initState()
@override
void initState() {
SchedulerBinding.instance.addPostFrameCallback((_) async {
await _dynamicLinkService.initDynamicLinks(context);
});
}
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力! …
我目前正在使用Firebase 11.2.0,无法成功创建短动态链接
我创建长链接的代码是:
val link = "https://example.com/param/id"
val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(link))
.setDynamicLinkDomain("v53sr.app.goo.gl")
.setAndroidParameters(DynamicLink.AndroidParameters.Builder("com.greelionsoft.mareas.espana")
.setMinimumVersion(22)
.build())
.buildDynamicLink()
Run Code Online (Sandbox Code Playgroud)
这个长链接代码可以通过意图共享,并按预期工作,但它太长了.
然后创建短链接的代码:
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLongLink(dynamicLink.uri)
.buildShortDynamicLink()
.addOnCompleteListener { task ->
if (task.isSuccessful) {
val shortLink = task.result.shortLink
//handle shortlink
} else {
//handle error
Log.e("TAG", "Short Dynamic link error", task.exception)
}
}
Run Code Online (Sandbox Code Playgroud)
任务总是不成功,并在logcat中打印以下错误:
Dynamic link error 7: Forbidden
com.google.android.gms.common.api.ApiException: 7: Forbidden
at com.google.android.gms.common.api.internal.zzde.zza(Unknown Source)
at com.google.android.gms.internal.zzdzo.zza(Unknown Source)
at com.google.android.gms.internal.zzdzt.onTransact(Unknown Source)
at android.os.Binder.execTransact(Binder.java:565)
Run Code Online (Sandbox Code Playgroud)
我无法找到关于这个"错误7:禁止"的任何线索
有人遇到过同样的问题吗?
谢谢.