ios - AFNetworking + Google Places API Web服务+具有多个baseURL的Parse SDK

标签 ios objective-c parse-platform google-places-api afnetworking-2

我在一个项目中将结合使用这些服务:

  • AFNetworking
  • Google Places API网络服务
  • 解析

  • 尝试遵循AFNetworking文档中提到的最佳做法:

    针对iOS 7或Mac OS X 10.9或更高版本的开发人员
    鼓励广泛使用Web服务进行子类化
    AFHTTPSessionManager,提供一个返回共享的类方法
    身份验证和其他配置可以在其上的单例对象
    在整个应用程序中共享。

    因此,我创建了一个单例网络管理器,例如:

    MyAppAPI.h
    #import <Foundation/Foundation.h>
    #import "AFHTTPSessionManager.h"
    #import "AFNetworking.h"
    
    @interface MyAppAPI : AFHTTPSessionManager
    
    +(MyAppAPI *)sharedInstance;
    
    @end
    

    MyAppAPI.m
    #import "MyAppAPI.h"
    @implementation MyAppAPI
    
    +(MyAppAPI*)sharedInstance
    {
        static MyAppAPI* sharedInstance = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
           sharedInstance = [[MyAppAPI alloc] initWithBaseURL:[NSURL URLWithString:kROOT_URL]];
        });
        return sharedInstance;
    }
    @end
    

    其中kROOT_URL"https://maps.googleapis.com/maps/api/place/nearbysearch"
    用法:
      NSDictionary *params = @{@"some_param":@"some_value" };
    
       [[MyAppAPI sharedInstance] GET: @"/json"
                                parameters:params
                                   success:^(NSURLSessionDataTask *task, id responseObject){
    
    
         } failure:^(NSURLSessionDataTask *task, NSError *error)
         {
    
         }];
    

    现在,它仅适用于我们服务的Google Places API。
  • 如果我想使用其他Web服务,如何更改baseURL,如果不可能的话,如何解决这种情况?
  • 如何使用管理器处理Parse?任何好的做法。

  • 我需要最佳做法建议,以结合使用Parse,AFNetworking和Google Places API网络服务。

    已经发现:changing AFNetworking baseURL但没有帮助

    最佳答案

    做您正在做的事非常好。重要思想是该文档建议的单例是每个服务的单例。对单例名称的选择进行一些调整可能会有助于弄清楚,所以与其...

    // MyAppAPI.h
    @interface MyAppAPI : AFHTTPSessionManager
    

    认为您到目前为止所写的应该被称为...
    // GooglePlacesAPI.h
    @interface GooglePlacesAPI : AFHTTPSessionManager
    

    ...并包括类似...的方法
    - (void)nearbySearch:(NSString *)value
                 success:(void (^)(NSURLSessionDataTask *, id))success 
                 failure:(void (^)(NSURLSessionDataTask *, NSError *))failure {
    
        NSDictionary *params = @{@"some_param":value };
        [self GET: @"/json" parameters:params success:success failure:failure];
    }
    

    此类客户随后会说...
    [GooglePlacesAPI nearbySearch:@"some value" success:^(NSURLSessionDataTask *task, id responseObject) {
        // handle success
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        // handle failure
    }];
    

    Parse为您提供了使用REST API的选项,并且您可以遵循相同的模式为Parse创建单例。
    // ParseAPI.h
    @interface ParseAPI : AFHTTPSessionManager
    

    值得一提的是,Parse还提供了完整的iOS SDK,以类似于AFNetworking的方式包装网络代码,因此,如果您选择SDK而不是REST API,则不需要这种方法。

    关于ios - AFNetworking + Google Places API Web服务+具有多个baseURL的Parse SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030388/

    相关文章:

    ios - iOS应用程序-需要更改应用程序名称,但是推送通知证书,预配配置文件和应用程序ID会怎样?

    iphone - 在 iOS 上同时使用手电筒和相机 - 在后台后不起作用

    ios - 如何以视觉语言格式编写内在大小的内容拥抱优先级?

    ios - 在 Swift 中使用 PFQueryTableViewController 检查互联网连接

    Android:下载字体字体并在应用程序中使用

    IOS 以编程方式创建 UIAlertViewController

    ios - 从 Swift 中的外部类发送数据。音乐应用程序

    ios - 使用 UIScrollView 时将 UITextField 移动到键盘上方

    iphone - 更改 UITextField 行为

    javascript - 为什么提取的数据没有显示在我的 HTML 中?