- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
根据 Firebase 文档,我在 Firebase 控制台中创建动态链接,然后在我的应用中包含动态链接 SDK。
一切都很好,但是当我从 Facebook 或 Messenger 单击共享链接(这是我的动态链接)时,它会弹出一个带有打开应用程序按钮的页面,并询问我是否要打开我的应用程序。 我没有制作此页面。我想删除它。
但我点击备忘录中的链接,它会打开我的应用程序并直接转到正确的页面。我想要与共享链接相同的方式。
这是我的代码,我使用带有 Objective-c 的 Xcode 来开发 iOS 应用程序。谢谢!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[FIROptions defaultOptions].deepLinkURLScheme = @"com.levooya.LeVooya";
[FIRApp configure];
return YES;
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler{
NSURL *url = userActivity.webpageURL;
NSLog(@"continueUserActivity url.absoluteString:%@",url.absoluteString);
BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink *dynamicLink, NSError *error){
if(dynamicLink.url){
NSLog(@"okokokokokok");
NSLog(@"dynamicLink.url:%@",dynamicLink.url);
NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:dynamicLink.url
resolvingAgainstBaseURL:NO];
for(NSURLQueryItem *item in urlComponents.queryItems){
if([item.name isEqualToString:@"product_id"]){
NSLog(@"item.value:%@",item.value);
NSString *productID = item.value;
NSDictionary *urlSchemeDict = [[NSDictionary alloc] init];
urlSchemeDict = [NSDictionary dictionaryWithObject:productID forKey:@"product_id"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"URLSchemeShowProduct" object:nil userInfo:urlSchemeDict];
leData = [LevooyaData getInstance];
leData.urlSchemeDict = nil;
leData.urlSchemeDict = urlSchemeDict;
}
}
}
}];
return YES;
}
(这是在我的应用程序中显示产品的页面,这是我点击分享按钮生成动态链接的功能。)
- (void)share{
NSString *originalLink = [NSString stringWithFormat:@"https://pbu3y.app.goo.gl/?link=https://levooya.com/product?product_id=%u&isi=1221262097&ibi=com.levooya.LeVooya&product_id=%u", productID, productID];
NSURL *link = [NSURL URLWithString:originalLink];
FIRDynamicLinkComponents *components =
[FIRDynamicLinkComponents componentsWithLink:link
domain:@"pbu3y.app.goo.gl"];
FIRDynamicLinkSocialMetaTagParameters *socialParams = [FIRDynamicLinkSocialMetaTagParameters parameters];
socialParams.title = product.brand;
socialParams.descriptionText = product.product;
components.socialMetaTagParameters = socialParams;
FIRDynamicLinkNavigationInfoParameters *navigationInfoParameters = [FIRDynamicLinkNavigationInfoParameters parameters];
navigationInfoParameters.forcedRedirectEnabled = 0;
components.navigationInfoParameters = navigationInfoParameters;
[components shortenWithCompletion:^(NSURL *_Nullable shortURL,
NSArray *_Nullable warnings,
NSError *_Nullable error) {
// Handle shortURL or error.
if (error) {
NSLog(@"Error generating short link: %@", error.description);
return;
}
shortenURL = shortURL;
NSString *noteStr = [NSString stringWithFormat:NSLocalizedString(@"Check out %@ %@ on Levooya ! %@", nil), product.brand, product.product, shortenURL];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[noteStr] applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];
}];
}
最佳答案
你说的是App预览页面,见https://firebase.google.com/docs/dynamic-links/link-previews .
您可以通过指定动态链接参数 efr=1
来禁用此页面。在控制台中创建链接时也有一个复选框可以禁用此页面。在您的代码中使用 navigationInfoParameters.forcedRedirectEnabled = YES;
。
请记住:如果您在 iPhone 上安装了您的应用程序时看到应用程序预览页面,这意味着通用链接无法使用。当动态链接被粘贴到浏览器地址栏时,可能会发生这种情况。或者点击非合作应用程序内部发生的链接(某些应用程序不允许使用通用链接)。确保您在禁用 App 预览的情况下测试了链接行为并且对此感到满意。
编辑:刚刚意识到您的深层链接不正确。而不是
NSString *originalLink = [NSString stringWithFormat:@"https://pbu3y.app.goo.gl/?link=https://levooya.com/product?product_id=%u&isi=1221262097&ibi=com.levooya.LeVooya&product_id=%u", productID, productID];
你应该像这样使用你的深层链接:
NSString *originalLink = [NSString stringWithFormat:@"https://levooya.com/product?product_id=%u", productID];
关于ios - Firebase Dynamic Link 无法直接打开应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47687111/
如何将多个json对象添加/映射到dart对象 import 'dart:async'; import 'dart:convert'; import 'package:flutter/foundati
我正在研究将产品集成到 Dynamics Great Plains 中。我之前使用过 Dynamics CRM,但没有使用过 Great Plains。我听说 GP 与 CRM 是不同的动物,即使它们
System.Linq.Dynamic.Core 和 System.Linq.Dynamic 有什么区别?我目前正在使用 System.Linq.Dynamic 并且它不包含对 的支持选择 和 多选
我正在尝试通过Firebase存储将图像上传到Firebase,然后在Firestore中创建一个文档,其中包含上述上传图像的网址。为此,我使用此功能 void uploadImageAndCr
我一直在尝试整理一些东西,使我可以从 ListPlot 中提取点,以便在进一步的计算中使用它们。我目前的方法是使用 Locator[] 选择点。这适用于显示点,但我无法弄清楚如何从带有 head Dy
只要我在与 Program 类相同的程序集中有类 ClassSameAssembly ,下面的代码就可以正常工作。但是,当我将类 ClassSameAssembly 移动到单独的程序集时,会引发 Ru
我只是尝试从Firebase实时数据库解析数据。 但在转换为模型时有问题 我正在尝试从Flutter上解析Firebase数据库中的数据。 但是一个错误说 MY Complete QUIZ: {-M5
我创建了一个方法,当我构建它时,出现了这个错误: type '_InternalLinkedHashMap' is not a subtype of type 'List' in type cast
我对这个 flutter 的简单图表代码有疑问。在我尝试运行代码时显示此错误。请任何人都可以帮助我在这.... The argument type 'List>' can't be assigned
我尝试在我的 flutter 应用程序中解析来自 Firestore 的文档。 Firestore 文档: 我创建了两个类来解析这个文档。 类产品: class Produkt{ String n
我有一个2d-List,其中包含一个字符串和一个Map,如下所示: List> content = [ [ "String", { "one": 23,
我使用 Dart“json_serializable”包在 Flutter 应用程序中的 Firestore 数据结构下反序列化。 { googleBookId: jjl4BgAAQBAJ, prov
我注册了 Dynamic CRM 在线试用版(30 天)并创建了一个非托管自定义解决方案(新字段、一些自定义实体等)。现在,我想导出非托管解决方案并将其导入到我的服务器中的 Dynamic CRM O
当我尝试从 StreamTransform 获取一些数据时遇到一些问题 我不明白什么是正确的数据类型 未捕获的异常:类型错误:“_StreamHandlerTransformer”的实例:“_Stre
我正在尝试获取用户数据,但在这样做时出现以下错误: Exception: type '_InternalLinkedHashMap' is not a subtype of type 'Map 我查看
我正在尝试在 sqflite 数据库中保存一些带有 flutter 的数据,但我仍然收到一条错误消息: [ERROR:flutter/shell/common/shell.cc(181)] Dart
我有一个JSON响应,结构如下:。在这个JSON响应中,有各种动态键,如“Owner”和“Master”,每个键都包含一个JSON对象或一个JSON对象数组。我需要创建一个gson数据类来解析这个动态
在 Dynamics 2012 ax 中编译 CIL 时,我看到以下错误 - 名称为“Dynamics.Ax.application”的重复类型。在程序集中“Dynamics.Ax.applicati
我有一个带有 LinkedHashMap 成员的 StatefulWidget 小部件,如下所示: LinkedHashMap _items = new LinkedHashMap>(); 现在我需要
我正在尝试按照此处所述实现搜索资源功能:https://cloudblogs.microsoft.com/dynamics365/it/2019/05/21/retrieve-resource-ava
我是一名优秀的程序员,十分优秀!