Aviasales/Jetradar iOS SDK Core
示例
例如,您可以使用我们的来自 Aviasales-iOS-SDK 仓库的模板项目。
⚙ 安装
最简单的方法是使用 CocoaPods。它负责所有必需的框架和第三方依赖。
pod 'AviasalesSDK', '~> 4.0.0'
我们推荐在每个使用 SDK 中对象或协议的文件中导入 AviasalesSDK.h
。
#import <AviasalesSDK/AviasalesSDK.h>
在像这样与 SDK 交互之前,请配置 AviasalesSDK
对象:
AviasalesSDKInitialConfiguration *configuration = [AviasalesSDKInitialConfiguration configurationWithAPIToken:@"Your api token here"
APILocale:[NSLocale currentLocale].localeIdentifier
partnerMarker:@"Your partner marker here"];
[AviasalesSDK setupWithConfiguration:configuration];
不要忘记将此示例中的两个占位符替换为实际值。
特点
✈️ 航班票务搜索
请使用JRSDKSearchInfoBuilder
对象指定搜索参数。以下是一个示例。
创建搜索信息
创建一个简单的对象,用于描述新的搜索
JRSDKConfigurableSearchInfo *searchInfoBuilder = [[JRSDKSearchInfoBuilder alloc] init];
设置搜索必要参数(adults = 2 和 travelClass = Business 表示两位成人希望乘坐商务舱)
searchInfoBuilder.adults = 2;
searchInfoBuilder.travelClass = JRSDKTravelClassBusiness;
设置旅行日期和机场(使用SDK的机场存储)
JRSDKTravelSegmentBuilder *travelSegmentBuilder = [JRSDKTravelSegmentBuilder new]
travelSegmentBuilder.departureDate = [NSDate date];
travelSegmentBuilder.originAirport = [[AviasalesSDK sharedInstance].airportsStorage findAnythingByIATA:@"LED"];
travelSegmentBuilder.destinationAirport = [[AviasalesSDK sharedInstance].airportsStorage findAnythingByIATA:@"MOW"];
将此旅行段保存到搜索信息中
searchInfoBuilder.travelSegments = [NSOrderedSet orderedSetWithObject:[travelSegmentBuilder build]];
最后,我们可以为后续使用构建一个JRSDKSearchInfo
对象
JRSDKSearchInfo *searchInfo = [searchInfoBuilder build];
就到这里。搜索信息已经准备好搜索。
执行搜索请求
要执行搜索请求,请使用从SDK获取的SearchPerformer
,并向其发送搜索信息。不要忘记在搜索过程中将此执行者保存到某处。
JRSDKSearchPerformer *searchPerformer = [[AviasalesSDK sharedInstance] createSearchPerformer];
将搜索执行者设置为委托(JRSDKSearchPerformerDelegate
)来检索活期和最终搜索结果
searchPerformer.delegate = self;
此委托需要实现两个方法
第一个方法在搜索完成且结果准备好显示时被调用。在其调用后,您可以释放SearchPerformer
,因为它不可重用。
- (void)searchPerformer:(JRSDKSearchPerformer *)searchPerformer didFinishSearch:(JRSDKSearchInfo *)searchInfo withResult:(JRSDKSearchResult *)result andMetropolitanResult:(JRSDKSearchResult *)metropolitanResult;
第二个是在搜索过程中出现错误时调用的方法
- (void)searchPerformer:(JRSDKSearchPerformer *)searchPerformer didFailSearchWithError:(NSError *)error;
可选的方法在从服务器接收到新的票务块时调用
- (void)searchPerformer:(JRSDKSearchPerformer *)searchPerformer didFindSomeTickets:(JRSDKSearchResultsChunk *)newTickets inSearchInfo:(JRSDKSearchInfo *)searchInfo temporaryResult:(JRSDKSearchResult *)temporaryResult temporaryMetropolitanResult:(JRSDKSearchResult *)temporaryMetropolitanResult;
开始进行搜索
[searchPerformer performSearchWithSearchInfo:searchInfo];
解析搜索结果
搜索结果作为JRSDKSearchResult
对象接收。如果以特定机场作为参数启动搜索,则会发生result
和 metropolitanResult
不一样的情况 —— 后者将包含飞往该城市任何机场的机票。
💸 购买机票
AviasalesSDKPurchasePerformer
是一个用于执行机票预订的对象。每张机票包含来自不同机构的不同的建议,您应该使用其中一个作为输入参数。使用价格和通过搜索结果返回的 JRSDKSearchResult > JRSDKSearchResultInfo
创建演员。
- (instancetype)initWithPrice:(id <JRSDKPrice>)price
searchId:(NSString *)searchId;
生成购买链接
- (void)performWithDelegate:(id <AviasalesSDKPurchasePerformerDelegate>)delegate;
在浏览器中打开通过代理人收到的链接以提供用户购买表单。
⚒ SDK提供的其他实用工具
名称 | 如何检索对象 | 描述 |
---|---|---|
机场存储 | [AviasalesSDK sharedInstance].airportsStorage |
通过IATA查找机场,提供机场列表 |
AviasalesAirportsSearchPerformer |
[[AviasalesAirportsSearchPerformer alloc] init] |
通过字符串查找机场 |
AviasalesNearestAirportsManager |
[AviasalesSDK sharedInstance].nearestAirportsManager |
查找离当前用户最近的机场 |
JRSDKModelUtils |
[JRSDKModelUtils <method name here>] |
帮助您使用SDK对象的实用方法 |