-
Notifications
You must be signed in to change notification settings - Fork 34
SDK for iOS
注:本文为华米授权iOS终端SDK的新手使用教程,只涉及教授SDK的使用方法,默认读者已经熟悉XCode开发工具的基本使用方法,以及具有一定的编程知识基础等。下文中的SDK都是指华米授权SDK华米SDK Sample Demo源码
SDK中只包含一个libHuamiSDK.framework
[1] 在XCode中建立你的工程。
[2] 在工程的Podfile里面添加以下代码:
pod 'libHuamiSDK'
保存并执行pod install,然后用后缀为.xcworkspace的文件打开工程。
[1] 在XCode中建立你的工程。
[2] 将SDK文件中包含的libHuamiSDK.framework文件导入到测试工程
[3] 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“Build Settings”标签栏的“Other c Flag“添加“-ObjC”效果图如下
[1] 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id,注意添加scheme的id需要默认添加$(PRODUCT_BUNDLE_IDENTIFIER).前缀,即$(PRODUCT_BUNDLE_IDENTIFIER).xxxxxxxx,其中xxxxxxxx就是你的id。代码如下
CFBundleURLTypes
CFBundleTypeRole
huami
CFBundleURLName
huami
CFBundleURLSchemes
$(PRODUCT_BUNDLE_IDENTIFIER).xxxxxxxx
效果图如下 [2] iOS9.0之后好需要在“info”标签栏中增加LSApplicationQueriesSchemes
LSApplicationQueriesSchemes
midong
midongauth
mifit
mifitauth
huamiwatch
watchauth
效果图如下
[1] 首先引入头文件HMApi和实现HMApiDelegate协议,图片如下
[1] 要使你的程序启动后SDK能响应你的程序,必须在代码中向SDK注册你的id。(在 AppDelegate 的 didFinishLaunchingWithOptions 函数中向SDK注册id)。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
//给的ID没有hm,但是注册的时候必须手动添加hm
/ 华米授权策略,由于账号数据不互通,暂时只能用这三种策略,其他策略暂时不建议使用
HMApiAuthPolicyHealthOnly: 只用华米健康
HMApiAuthPolicyMiFitOnly: 只用小米运动
HMApiAuthPolicyWatchOnly: 只用手表助手
*/
[HMApi registerAppWithAuthPolicy:HMApiAuthPolicyMiFitFirst];
return YES;
}
[2] 重写AppDelegate的openURL方法:
//iOS9之前版本会调用这个方法
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation {
return [HMApi handleOpenURL:url delegate:self];
}
//iOS9之后才支持的这个方法
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options{
return [HMApi handleOpenURL:url delegate:self];
}
[3] 现在,你的程序要实现和SDK交互的具体请求与回应,因此需要实现HMApiDelegate协议的一个方法:
- (void)hmApiDelegateDidReceiveResponse:(HMBaseResponse *)response{
if (response.errorCode == HMApiSuccess) {
if (response.type == HMAppRequestTypeAuth) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"授权成功" message:nil preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil]];
[self.window.rootViewController presentViewController:alertController animated:YES completion:nil];
}
} else if (response.errorCode == HMApiErrCodeUserCancel){
if (response.type == HMAppRequestTypeAuth) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"取消授权" message:nil preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil]];
[self.window.rootViewController presentViewController:alertController animated:YES completion:nil];
}
} else if (response.errorCode == HMApiErrCodeAuthDeny){
if (response.type == HMAppRequestTypeAuth) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"授权失败" message:response.errorMessage preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil]];
[self.window.rootViewController presentViewController:alertController animated:YES completion:nil];
}
}
}
如果第三方程序向支持授权的华米应用发送了sendReq的请求,那么hmApiDelegateDidReceiveResponse会被回调。sendReq请求调用后,会切到华米应用终端程序界面。
[4] 如果你的程序要授权,那么需要调用HMApi的sendRequest函数:
+ (BOOL)sendRequest:(HMBaseRequest *)request;
至此,你已经能使用SDK的API内容了。详细的使用请看下载Sample Demo源码
遇到错误码,请查阅官网API文档