Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS上的谷歌应用程序索引_Ios_Objective C_Url Scheme_Google Index - Fatal编程技术网

iOS上的谷歌应用程序索引

iOS上的谷歌应用程序索引,ios,objective-c,url-scheme,google-index,Ios,Objective C,Url Scheme,Google Index,我们想在我们的应用程序中实现谷歌的iOS应用程序索引。所以,我跟着导游来到这里: 还安装了无缝的CocoaPods。然后,我们添加了以下代码: - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { NSURL *sanitizedURL = [GSD

我们想在我们的应用程序中实现谷歌的iOS应用程序索引。所以,我跟着导游来到这里:

还安装了无缝的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>
CbundleUrlTypes
CFBundleURLName
古格里普
CbundleTypeRole
编辑
CFBundleURLName
标识符
循环流化床锅炉方案
标识符
CbundleTypeRole
编辑
CFBundleURLName
gsd标识符
循环流化床锅炉方案
gsd标识符
然而,我们的应用程序在启动时(甚至在运行我们自己的代码之前)在
openURL
方法的第一行崩溃:

NSURL*sanitizedURL=[GSDDeepLink handleDeepLink:url]

错误:

+[UIFont gsd_fontOfSize:]:发送到类0x112af3f48的无法识别的选择器

根据谷歌的说法,如果我们在运行时遇到这个错误,我们应该这样做:

如果您看到一个运行时错误,类似于:+[UIFont gsd_fontOfSize:::]:发送到类0xXXXXXXXXX的无法识别的选择器,请确保您正确使用CocoaPods,如CocoaPods网站上的“入门”部分所述。请注意,在构建项目时,应该打开CocoaPods生成的Xcode工作区,而不是项目文件。CocoaPods将设置一些必要的链接器标志

如果仍然看到问题,请确保-ObjC链接器标志 已在生成设置的“其他链接器标志”行中设置


然而,这并没有解决我们的问题。作为测试,我决定启动一个演示项目并测试那里的链接。在演示应用程序上-它工作得很好。所以我们认为这可能是一个项目设置?

您需要做的不仅仅是安装CoCoapod。您需要实际创建
PodFile
文件,以包含要使用的库的相应pod。抱歉,忘记添加了。我这样做了,并添加了Google sdk。您运行了“pod install”来实际安装库?是的,sdk会添加到项目中,因为我可以使用它。当应用程序使用深度链接打开时,它就会崩溃。谷歌代码崩溃。正如我所说的,如果我创建一个演示项目,它就会工作。添加到这个项目中,它不会。你搞不懂吗?我遇到了同样的问题,它甚至无法编译。