AlarmManager.mm 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. //
  2. // AlarmManager.m
  3. // FunSDKDemo
  4. //
  5. // Created by XM on 2018/5/5.
  6. // Copyright © 2018年 XM. All rights reserved.
  7. //
  8. #import "AlarmManager.h"
  9. #import "FunSDK/Fun_MC.h"
  10. @implementation AlarmManager
  11. + (instancetype)getInstance {
  12. static AlarmManager *Manager;
  13. static dispatch_once_t onceToken;
  14. dispatch_once(&onceToken, ^{
  15. Manager = [[AlarmManager alloc]init];
  16. });
  17. return Manager;
  18. }
  19. - (id)init {
  20. self = [super init];
  21. return self;
  22. }
  23. //注册报警功能
  24. - (void)LinkAlarm:(NSString *)deviceMac DeviceName:(NSString *)devName {
  25. NSString *userName = [[LoginShowControl getInstance] getLoginUserName];
  26. NSString *psw = [[LoginShowControl getInstance] getLoginPassword];
  27. MC_LinkDev(self.msgHandle, SZSTR(deviceMac), SZSTR(userName), SZSTR(psw), 0, SZSTR(devName));
  28. }
  29. //注销设备报警通知
  30. - (void)UnlinkAlarm:(NSString *)deviceMac {
  31. MC_UnlinkDev(self.msgHandle, [deviceMac UTF8String], 0);
  32. }
  33. //推送服务器初始化
  34. - (void)initServer:(const char*)tokenChar {
  35. const char *userName = NULL;
  36. const char *password = NULL;
  37. //根据用户名判断当前时什么登陆方式
  38. if ([[LoginShowControl getInstance] getLoginType] == loginTypeLocal) {
  39. userName = [@"XMEye" UTF8String];
  40. password = [@"XMEye" UTF8String];
  41. }else{
  42. userName = [[[LoginShowControl getInstance] getLoginUserName] UTF8String];
  43. password = [[[LoginShowControl getInstance] getLoginPassword] UTF8String];
  44. }
  45. EMSGLANGUAGE language;
  46. //设置汉语时才是汉语,否则是英语
  47. NSString *languageStr = [LanguageManager currentLanguage];
  48. if ([languageStr isEqualToString:@"zh_CN"] || [languageStr isEqualToString:@"zh_TW"]) {
  49. language = ELG_CHINESE;
  50. }else{
  51. language = ELG_ENGLISH;
  52. }
  53. SMCInitInfo info = {0};
  54. STRNCPY(info.token, tokenChar);
  55. strcpy(info.user, userName);
  56. strcpy(info.password, password);
  57. info.language = language;
  58. if (0) { //如果需要定制报警服务器的话,需要执行这个方法
  59. strcpy(info.szAppType, [TESTURL UTF8String]);
  60. }
  61. #ifdef DEBUG
  62. PushType pushType = DevelopmentType;
  63. #else
  64. PushType pushType = ProductionType;
  65. #endif
  66. info.appType = pushType;
  67. NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary];
  68. NSString *bundleIdentifiler = [infoDictionary objectForKey:@"CFBundleIdentifier"];
  69. STRNCPY(info.szAppType, [bundleIdentifiler UTF8String]);
  70. MC_Init(self.msgHandle, &info, 0);
  71. }
  72. #pragma mark - 回调函数
  73. - (void)OnFunSDKResult:(NSNumber *)pParam {
  74. NSInteger nAddr = [pParam integerValue];
  75. MsgContent *msg = (MsgContent *)nAddr;
  76. switch (msg->id) {
  77. case EMSG_MC_LinkDev:
  78. if (msg->param1 < 0) {
  79. //注册失败
  80. }else{
  81. //注册成功
  82. }
  83. if (self.delegate && [self.delegate respondsToSelector:@selector(LinkAlarmDelegate:Result:)]) {
  84. [self.delegate LinkAlarmDelegate:NSSTR(msg->szStr) Result:msg->param1];
  85. }
  86. break;
  87. case EMSG_MC_UnlinkDev:
  88. if (msg->param1 < 0) {
  89. //注销失败
  90. }else{
  91. //注销成功
  92. }
  93. if (self.delegate && [self.delegate respondsToSelector:@selector(LinkAlarmDelegate:Result:)]) {
  94. [self.delegate UnlinkAlarmAlarmDelegate:NSSTR(msg->szStr) Result:msg->param1];
  95. }
  96. break;
  97. default:
  98. break;
  99. }
  100. // 更新本地记录并且注册服务端
  101. }
  102. @end