管理用户账号信息

更新时间:2024-11-12 07:23:37下载pdf

修改用户账号信息

修改用户的自定义头像

因为用户自行上传头像会涉及合规问题,给您带来不必要的风险,该接口即将停止更新,请注意避免使用并及时调整应用功能。

参数说明

参数 说明
headIcon 头像图像
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objective-C

- (void)updateHeadIcon:(UIImage *)headIcon {
	[[ThingSmartUser sharedInstance] updateHeadIcon:headIcon success:^{
		NSLog(@"update head icon success");
	} failure:^(NSError *error) {
		NSLog(@"update head icon failure: %@", error);
	}];
}

Swift

func updateHeadIcon(_ headIcon: UIImage) {
    ThingSmartUser.sharedInstance()?.updateHeadIcon(headIcon, success: {
        print("update head icon success")
    }, failure: { (error) in
        if let e = error {
            print("update head icon failure: \(e)")
        }
    })
}

选择摄氏温度或者华氏温度

接口描述

- (void)updateTempUnitWithTempUnit:(NSInteger)tempUnit
                           success:(nullable ThingSuccessHandler)success
                           failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
tempUnit 温度单位
  • 1:°C
  • 2:°F
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objective-C

- (void)updateTempUnitWithTempUnit:(NSInteger)tempUnit {
	[[ThingSmartUser sharedInstance] updateTempUnitWithTempUnit:tempUnit success:^{
		NSLog(@"update temp unit success");
	} failure:^(NSError *error) {
		NSLog(@"update temp unit failure: %@", error);
	}];
}

Swift

func updateTempUnit(withTempUnit tempUnit: Int) {
    ThingSmartUser.sharedInstance().updateTempUnit(withTempUnit: tempUnit, success: {
        print("update temp unit success")
    }, failure: { error in
        if let error = error {
            print("update temp unit failure: \(error)")
        }
    })
}

修改用户账号昵称

接口描述

- (void)updateNickname:(NSString *)nickName
               success:(nullable ThingSuccessHandler)success
               failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
nickName 昵称
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objective-C

- (void)modifyNickname:(NSString *)nickname {
	[[ThingSmartUser sharedInstance] updateNickname:nickname success:^{
		NSLog(@"updateNickname success");
	} failure:^(NSError *error) {
		NSLog(@"updateNickname failure: %@", error);
	}];
}

Swift

func modifyNickname(_ nickName: String) {
    ThingSmartUser.sharedInstance()?.updateNickname(nickName, success: {
        print("updateNickname success")
    }, failure: { (error) in
        if let e = error {
            print("updateNickname failure: \(e)")
        }
    })
}

更新用户所处的时区

接口描述

- (void)updateTimeZoneWithTimeZoneId:(NSString *)timeZoneId
                             success:(nullable ThingSuccessHandler)success
                             failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
timeZoneId 时区 ID,例如 Asia/Shanghai
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objective-C

- (void)updateTimeZoneId:(NSString *)timeZoneId {
	[[ThingSmartUser sharedInstance] updateTimeZoneWithTimeZoneId:timeZoneId success:^{
		NSLog(@"update timeZoneId success");
	} failure:^(NSError *error) {
		NSLog(@"update timeZoneId failure: %@", error);
	}];
}

Swift

func updateTimeZoneId(_ timeZoneId: String) {
    ThingSmartUser.sharedInstance()?.updateTimeZone(withTimeZoneId: timeZoneId, success: {
        print("update timeZoneId success")
    }, failure: { (error) in
        if let e = error {
            print("update timeZoneId failure: \(e)")
        }
    })
}

更新用户的当前定位

接口描述

- (void)updateLatitude:(double)latitude longitude:(double)longitude;

参数说明

参数 说明
latitude 用户所处的纬度
longitude 用户所处的经度

示例代码

Objective-C

- (void)updateLocation {
  double latitude = 30.000;
  double longitude = 120.000;
  [[ThingSmartSDK sharedInstance] updateLatitude:latitude longitude:longitude];
}

Swift

func updateLocation() {
  ThingSmartSDK.sharedInstance()?.updateLatitude(latitude, longitude: longitude);
}

更新当前账号绑定的手机或者邮箱

接口描述

/// Change to bind a mobile phone number or an email address.
/// @param account A mobile phone number or an email address.
/// @param countryCode The country code.
/// @param code The verification code.
/// @param success Called when the task is finished.
/// @param failure Called when the task is interrupted by an error.
- (void)changBindAccount:(NSString *)account
                      countryCode:(NSString *)countryCode
                                  code:(NSString *)code
                             success:(nullable ThingSuccessHandler)success
                             failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
account 账号,可以是手机号码或者邮箱
countryCode 国家码
code 验证码
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objective-C

[[ThingSmartSDK sharedInstance] changBindAccount:@"example@example.com"
         countryCode:@"001"
                code:@"123456"
             success:^(id result) {
                 NSLog(@"Success: %@", result);
             } failure:^(NSError *error) {
                 NSLog(@"Error: %@", error.localizedDescription);
             }];

Swift

ThingSmartSDK.sharedInstance().changBindAccount("example@example.com",
                     countryCode: "001",
                     code: "123456",
                     success: { result in
                         print("Success: \(result)")
                     }, failure: { error in
                         print("Error: \(error.localizedDescription)")
                     })

退出登录或切换账号

接口描述

- (void)loginOut:(nullable ThingSuccessHandler)success
         failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objective-C

- (void)loginOut {
	[ThingSmartUser sharedInstance] loginOut:^{
		NSLog(@"logOut success");
	} failure:^(NSError *error) {
		NSLog(@"logOut failure: %@", error);
	}];
}

Swift

func loginOut() {
    ThingSmartUser.sharedInstance()?.loginOut({
        print("logOut success")
    }, failure: { (error) in
        if let e = error {
            print("logOut failure: \(e)")
        }
    })
}

停用或注销用户账号

接口描述

注销账号后,一周后才会永久注销并删除用户账户中的所有信息。但是,如果用户在永久注销之前重新登录的话,则注销请求会被取消。

- (void)cancelAccount:(nullable ThingSuccessHandler)success
              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objective-C

- (void)cancelAccount {
	[ThingSmartUser sharedInstance] cancelAccount:^{
		NSLog(@"cancel account success");
	} failure:^(NSError *error) {
		NSLog(@"cancel account failure: %@", error);
	}];
}

Swift

func cancelAccount() {
    ThingSmartUser.sharedInstance()?.cancelAccount({
        print("cancel account success")
    }, failure: { (error) in
        if let e = error {
            print("cancel account failure: \(e)")
        }
    })
}

处理登录会话过期

为了确保良好的用户体验,妥善处理登录会话过期问题至关重要。以下是可能导致会话过期的常见情况:

  • 用户主动退出登录
  • 长时间未进行任何操作,超过 45 天未发起数据请求
  • 在已登录状态下,通过其他设备修改了账号密码
  • 同一账号在多个设备上登录,超过设备登录限制时,最早的会话将被强制登出

在这些情况下,您需要监听 ThingSmartUserNotificationUserSessionInvalid 通知,并引导用户跳转至登录页面,以便重新登录。

SDK 5.1 以前版本会在失效时收到多条 ThingSmartUserNotificationUserSessionInvalid 通知,导致您的回调被执行多次而造成问题。建议在处理通知时增加 仅处理一次 的控制,比如利用布尔变量、时间窗口等。

Objective-C

- (void)loadNotification {
	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionInvalid) name:ThingSmartUserNotificationUserSessionInvalid object:nil];
}

- (void)sessionInvalid {
		NSLog(@"sessionInvalid");
		//跳转至登录页面
		MyLoginViewController *vc = [[MyLoginViewController alloc] init];
		self.window.rootViewController = vc;
	  [self.window makeKeyAndVisible];
}

Swift

func loadNotification() {
    NotificationCenter.default.addObserver(self, selector: #selector(sessionInvalid), name: NSNotification.Name(rawValue: "ThingSmartUserNotificationUserSessionInvalid"), object: nil)
}

@objc func sessionInvalid() {
    print("sessionInvalid")
    //跳转至登录页面
		let vc = MyLoginViewController()
		window.rootViewController = vc
		window.makeKeyAndVisible()
}