菜鸟教程小白 发表于 2022-12-13 02:37:35

ios - Google API 错误 - 归因不一致


                                            <p><p>使用 <code>Google Places API</code> HTTP 网络服务调用 URL 获取地点的照片数据,</p>
<p><code>https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=<LOCATION>&radius=<RADIUS>&sensor=false&key=<API_KEY></code></p >
<p>产生预期的回调。这是我用于测试的请求的响应。</p>
<pre><code>2017-09-19 11:20:32.968347-0400 &lt;MY_APP_NAME&gt; Places Found: (
      {
      ...
      ...
      photos =         (
                        {
                height = 5312;
                &#34;html_attributions&#34; =               (
                  &#34;&lt;a href=\&#34;https://maps.google.com/maps/contrib/110407035205544174409/photos\&#34;&gt;leah steen&lt;/a&gt;&#34;
                );
                &#34;photo_reference&#34; = &#34;CmRaAAAAcppPDrYGBnLqlyYQ_EMmsvgKXXpVjp0drGkJPWLBwlSzrWzuhtFFGCzQPl1pSez92QVktthtaMSsV1IlAWMIMPboycElhruKgUg-KFHWWrhLKOR6h8GGiR349rhokAFJEhApc7ghYIH0guUQBGJi1bKBGhQMcElN7-lSBzvCgAG3vVzANLkf6A&#34;;
                width = 2988;
            }
      );
      ...
      ...
    }
)
</code></pre>
<p>如您所见,这个地方有一个照片字典,其中包含相关图像的 <code>html_attributions</code> 值,我在整个应用程序中都对其进行了适当的处理。</p>
<h3>问题:</h3>
<p>当我获取同一个地方的照片数据时,通过使用 place_id,我得到了照片和属性:</p>
<pre><code>2017-09-19 11:22:08.548253-0400 &lt;MY_APP_NAME&gt; photo data: (
    &#34;&lt;UIImage: 0x17048b720&gt; size {169, 300} orientation 0 scale 2.000000&#34;,
    &#34;leah steen{\n}&#34;
)
</code></pre>
<p>我收到的当然是同一张照片,<strong>但署名没有链接</strong>。正如您从我使用网络服务的其他方法中看到的那样,这个地方的照片<strong>确实</strong>有一个归属地<strong>带有</strong>一个链接。</p>
<p>我很茫然。如果他们的 iOS SDK 没有返回相同的数据,我应该如何从 Google 获得完整的归因?</p>
<h3>代码:</h3>
<p>使用 Google <em>other</em> 建议的方法通过 <code>place_id</code> 获取地点的照片数据,您可以获得图像和图像属性(如果有的话)。</p>
<p>按照 Google 的要求,我使用这两种方法获取数据:</p>
<pre><code>- (void)lookUpPhotosForPlaceID:(NSString *)placeID
                      callback:(GMSPlacePhotoMetadataResultCallback)callback;

- (void)loadPlacePhoto:(GMSPlacePhotoMetadata *)photo
            callback:(GMSPlacePhotoImageResultCallback)callback;
</code></pre>
<p>这是我用于获取照片数据的代码。</p>
<pre><code>// Look up photos for the place
[ lookUpPhotosForPlaceID:placeID callback:^(GMSPlacePhotoMetadataList * _Nullable photos, NSError * _Nullable error) {
   
    if (error != nil) {
      response(error, NULL);
      return;
    }
   
    if (photos.results.count &gt; 0) {
      
      GMSPlacePhotoMetadata *metaData = photos.results.firstObject;   // Using the first photo
      
      // Load the photo
      [ loadPlacePhoto:metaData constrainedToSize:&lt;SOME_SIZE&gt; scale:.keyWindow.screen.scale callback:^(UIImage * _Nullable photo, NSError * _Nullable error) {
            
            if (error) {
                response(error, NULL);
                return;
            }
            
            NSArray *photoData = @;
            
            response(nil, photoData);
            
      }];
      
    }
    else response(error, NULL);
   
}];
</code></pre>
<p><strong>编辑:</strong></p>
<p>作为引用,Google<em>确实</em>通知其用户此数据可能会发生变化,并且多个回调<em>应该</em>返回相同的数据。然而,使用不同 API 的多次调用不会...</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以做几件事来验证正确的行为:</p>

<ol>
<li>您可以切换回第一个 API 并查看它是否真的再次返回。因为医生说:</li>
</ol>

<blockquote>
<p>Multiple calls of this method will probably return the same photos
each time. However, this is not guaranteed because the underlying data
may have changed.</p>
</blockquote>

<ol 开始=“2”>
<li><p>其次,您可以检查回调行为,如果您在调用回调时丢失了一些数据</p>

<p>NSArray *photoData = @;</p></li>
</ol>

<p>此时我会丢失属性字符串,但只保留纯文本(leah steen)。
检查此元数据的好方法是在 <em>loadPlacePhoto:callback:</em> </p> 之前</p>
                                   
                                                <p style="font-size: 20px;">关于ios - Google API 错误 - 归因不一致,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46304901/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46304901/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Google API 错误 - 归因不一致