iOS SDK配置

这篇文档将介绍如何配置和风天气开发服务中的iOS SDK。

隐私声明:和风天气iOS SDK不需要电话、位置、设备唯一标识符等任何特殊权限,我们不会也无法通过本SDK收集用户隐私信息。

和风天气iOS SDK支持下列操作系统:

  • iOS 15.0+
  • macOS 11.0+
  • tvOS 15.0+
  • watchOS 8.0+
  • visionOS 1.0+

第1步: 创建项目和凭据

请确保已经创建了项目和凭据,并已了解如何使用JWT身份认证

第2步: 安装SDK

当前iOS SDK的最新版本是5.0.0(更新记录),支持下列安装方式:

Swift Package Manager

iOS SDK支持使用Swift Package Manager集成,具体步骤请参考Adding package dependencies to your app

CocoaPods

和风天气iOS SDK可以通过CocoaPods进行安装。CocoaPods是一种开源依赖库管理器,如果你还未安装CocoaPods,请参考CocoaPods快速开始。下列步骤假设你已经完成了CocoaPods的安装和设置。

  1. 在项目根目录创建名为Podfile的文件
  2. Podfile文件中添加如下内容并保存:
    • iOS
      target '{YOUR_iOS_TARGET}' do
         pod 'QWeather-SDK','~> 5.0.0'
      end
      
    • macOS
      target '{YOUR_macOS_TARGET}' do
         pod 'QWeather-SDK','~> 5.0.0'
      end
      
  3. 打开终端,进入包含Podfile的目录
    • 运行:
       pod install
      

更新SDK

打开终端,进入包含Podfile的目录,运行:

pod update

手动安装

你可以选择手动安装和风天气iOS SDK。

  1. 下载SDK:QWeatherSDK 5.0.0
  2. QWeatherSDK.xcframework 包导入到iOS或macOS Target中

第3步: 添加API Host和Token

提示:iOS SDK仅支持JWT身份认证

将代码中的YOUR_HOSTYOUR_TOKEN替换为您的API HostJWT身份认证

Swift

import QWeatherSDK

...

let _ = try await QWeather
            .getInstance("{YOUR_HOST}")  // 初始化服务地址
            .setupTokenGenerator({  // 设置令牌生成器
                // 生产环境中应在此处实现令牌刷新逻辑,而非硬编码
                return "{YOUR_TOKEN}"  // 返回用于 API 认证的 JWT 令牌
            })
            .setupLogEnable(true)  // 启用调试日志(生产环境建议设置为 false)

Objective-C

#import <QWeatherSDK/QWeatherSDK-Swift.h>

...

// 初始化服务地址
[QWeatherObjc initConfigWithHost:@"{YOUR_HOST}"];

// 设置令牌生成器
[QWeatherObjc setupTokenGeneratorWithGenerater:^NSString * _Nonnull{
    // 生产环境中应在此处实现令牌刷新逻辑,而非硬编码
    return @"{YOUR_TOKEN}"; // 返回用于 API 认证的 JWT 令牌
}];

// 启用调试日志(生产环境建议设置为 false)
[QWeatherObjc setupLogEnable:YES];

示例代码

请求北京实时天气。

Swift

import QWeatherSDK

...

Task {
    do {
        let parameter = WeatherParameter(location: "101010100")
        let response = try await QWeather.instance.weatherNow(parameter)
        print(response)
    } catch QWeatherError.errorResponse(let error) {
        print(error)
    } catch {
        print(error)
    }
}

Objective-C

#import <QWeatherSDK/QWeatherSDK-Swift.h>

...

WeatherParameter *parameter = [WeatherParameter instanceWithLocation:@"101010100" lang:@(LangZH_HANS) unit:@(UnitMETRIC)];
[QWeatherObjc weatherNow:parameter completionHandler:^(WeatherNowResponse * _Nullable response, NSError * _Nullable error) {
    if (response) {
        NSLog(@"%@", response.description);
    }
    if (error) {
        NSLog(@"%@", error.localizedDescription);
    }
}];