我们想在我们的应用程序中实现 Google 的 iOS 应用程序索引。所以,我按照这里的指南:
https://developers.google.com/app-indexing/ios/app
也安装CocoaPods
了,无缝的。然后我们添加了这段代码:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSURL *sanitizedURL = [GSDDeepLink handleDeepLink:url];
NSLog(@"isdeeplinkApp %@", [GSDDeepLink isDeepLinkFromGoogleAppCrawler:url] ? @"Yes" : @"No");
NSLog(@"isdeeplinkSearch %@", [GSDDeepLink isDeepLinkFromGoogleSearch:url] ? @"Yes" : @"No");
NSLog(@"sanitized-url %@", sanitizedURL);
return YES;
}
然后,在将其添加到Plist
文件后,我们使用自定义 URL 对其进行了测试。
看起来像这样URLSchemes
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>googleapp</string>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>IDENTIFIER</string>
<key>CFBundleURLSchemes</key>
<array>
<string>IDENTIFIER </string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>gsd-IDENTIFIER </string>
<key>CFBundleURLSchemes</key>
<array>
<string>gsd-IDENTIFIER </string>
</array>
</dict>
</array>
然而,我们的应用程序在方法的第一行启动时崩溃(甚至在我们自己的代码之前)openURL
:
NSURL *sanitizedURL = [GSDDeepLink handleDeepLink:url];
错误:
+[UIFont gsd_fontOfSize:]: 无法识别的选择器发送到类 0x112af3f48
根据谷歌的说法,如果我们在运行时收到此错误,我们应该这样做:
如果您看到类似于以下内容的运行时错误:+[UIFont gsd_fontOfSize: ] : unrecognized selector sent to class 0xXXXXXXXXXX,请确保您正确使用 CocoaPods,如 CocoaPods 网站上的入门部分所述。请注意,在构建项目时,您应该打开 CocoaPods 生成的 Xcode 工作区而不是项目文件。CocoaPods 将设置一些必要的链接器标志。
如果您仍然看到问题,请确保 -ObjC 链接器标志已在“构建设置”的“其他链接器标志”行中设置。
然而,这并没有为我们解决问题。作为测试,我决定开始一个演示项目并测试那里的链接。在演示应用程序上 - 它工作得很好。所以我们认为它可能是一个项目设置?