VerificationManager.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. //
  2. // VerificationManager.h
  3. // Filmage Screen
  4. //
  5. // Version 1.0.1
  6. //
  7. // Created by 朱东勇 on 2018/2/8.
  8. // Copyright © 2018年 kdan mobile. All rights reserved.
  9. //
  10. #import <Foundation/Foundation.h>
  11. //#import "ASIFormDataRequest.h"
  12. //#import "JSONKit.h"
  13. #define kTestMode 0
  14. #if kTestMode
  15. #define kVerificationServer @"http://test-store.kdan.cn:3018/"
  16. #define kWebServerLink NSLocalizedString(@"http://test-pdf-pro.kdan.cn:3021", nil)
  17. #define kVerificationPDFullServer @"http://8.134.106.49:8032/pdf-tech/"
  18. #define kOEMBaseUrl @"https://pdf-api-anyrecover.ifonelab.net"
  19. #else
  20. #define kVerificationServer @"https://store.pdfreaderpro.com/"
  21. #define kWebServerLink NSLocalizedString(@"http://www.pdfreaderpro.com/store", nil)
  22. #define kVerificationPDFullServer @"https://console.pdfreaderpro.com/pdf-tech/"
  23. #define kOEMBaseUrl @"https://pdf-api.anyrecover.com"
  24. #endif
  25. #define kFetchLicenseCodeString [NSString stringWithFormat:@"%@/%@", kWebServerLink, @"store"]
  26. #define kLicenseRetrievalCodeString [NSString stringWithFormat:@"%@/%@", kWebServerLink, @"license_retrieval"]
  27. #define kFAQString [NSString stringWithFormat:@"%@/%@", kWebServerLink, @"faq"]
  28. #define kCheckUpdateURLString [NSString stringWithFormat:@"%@api/auth_devices/latest_version?lang=en&app_code=%@", kVerificationServer, [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"]?:@""]
  29. #define kFetchSysConfigInfoString [NSString stringWithFormat:@"%@/%@", kVerificationServer, @"api/sys_configs"]
  30. ///激活
  31. typedef enum {
  32. ActivityErrorTypeCDKeyEmpty,//CD Key为空
  33. ActivityErrorTypeCDKeyNotExist,//CD Key不存在
  34. ActivityErrorTypeNetworkDisable,//网络不可用
  35. ActivityErrorTypeOutNumber,//CD Key超出绑定数量,被其他设备使用
  36. ActivityErrorTypeCDKeyExpire,//序列码过期
  37. ActivityErrorTypeInvalidInfo,//激活错误,联系我们或查看FAQ
  38. ActivityErrorTypeNotMatchProduct,//CDkey是其他产品的
  39. ActivityErrorTypeFormatError,//格式错误
  40. ActivityErrorTypeUnknow,//未知错误
  41. }ActivityErrorType;
  42. typedef enum {
  43. ActivityStatusNone,
  44. ActivityStatusTrial, //试用
  45. ActivityStatusVerification, //激活
  46. ActivityStatusTrialExpire, //试用过期
  47. ActivityStatusVerifExpire, //过期
  48. ActivityStatusLicenseExpire,//序列号过期
  49. }ActivityStatus;
  50. typedef void(^ActivityComplention)(ActivityStatus status, NSDictionary *info, NSError *error);
  51. @interface VerificationManager : NSObject
  52. @property (nonatomic) BOOL autoVerification; //激活码定期自动校验,默认隔一小时校验一次
  53. @property (nonatomic, readonly) ActivityStatus status;
  54. @property (nonatomic, readonly) BOOL needUpgradeLicense;
  55. @property (nonatomic, readonly) NSString *licenseCode;
  56. @property (nonatomic, readonly) NSString *originLicenseCode;
  57. @property (nonatomic, readonly) NSDictionary *detailInfo;
  58. @property (nonatomic, readonly) BOOL secondTrialEnabled;
  59. @property (nonatomic, readonly) NSInteger trialTimes;
  60. @property (nonatomic, readonly) NSString *email;
  61. @property (nonatomic, readonly) NSString *subscriptionEmail;
  62. @property (nonatomic, readonly) NSString *accountName;
  63. @property (nonatomic, readonly) BOOL allowUnbind;
  64. @property (nonatomic, readonly) NSInteger unbindTimes;
  65. + (VerificationManager *)manager;
  66. + (VerificationManager *)defaultManager;
  67. + (NSMutableData*)mutableDataWithDic:(NSDictionary*)dic;
  68. ///** 跳转到 Built to Connect 官网商城购买界面,各App可自行跳转到对应激活购买界面
  69. // */
  70. //- (void)fetchVerificationCode;
  71. /** 激活设备
  72. @params info
  73. email 用户Email,可选
  74. cdkey 用户用于激活设备的激活码,必选
  75. */
  76. - (void)activateDeviceWithInfo:(NSDictionary*)info
  77. complention:(ActivityComplention)complention;
  78. /** 验证设备信息
  79. */
  80. - (void)verificationWithComplention:(ActivityComplention)complention;
  81. /** 登出
  82. */
  83. - (void)unactivateDeviceWithcomplention:(ActivityComplention)complention;
  84. /** 提交试用
  85. @param days 申请试用天数,由App端指定,Server端会限定最大试用天数
  86. @param email option, 申请人Email信息
  87. */
  88. - (void)trialForDays:(float)days
  89. email:(NSString*)email
  90. name:(NSString*)name
  91. complention:(ActivityComplention)complention;
  92. - (void)trialForDays:(float)days
  93. complention:(ActivityComplention)complention;
  94. /** 邀请部分
  95. @param email 当前App使用的email 地址,用于接由试用体验邮件
  96. */
  97. - (void)getCodeWithEmail:(NSString*)email
  98. complention:(ActivityComplention)complention;
  99. /** 使用好友的邀请码
  100. */
  101. - (void)userCode:(NSString*)code
  102. complention:(ActivityComplention)complention;
  103. /** 修改用户email
  104. */
  105. - (void)modifyEmail:(NSString*)email
  106. complention:(ActivityComplention)complention;
  107. /** 给好友发送邀请email, 多个email 使用 , 号分隔
  108. */
  109. - (void)sendInvateEmails:(NSString*)emails
  110. code:(NSString*)code
  111. complention:(ActivityComplention)complention;
  112. @end
  113. #pragma mark - Data Parse
  114. @interface NSDictionary (ActivityInfo)
  115. @property (nonatomic, readonly) ActivityStatus status;
  116. @property (nonatomic, readonly) NSDate *createDate;
  117. @property (nonatomic, readonly) NSDate *expireDate;
  118. @property (nonatomic, readonly) NSString *licenseCode;
  119. @property (nonatomic, readonly) NSString *originLicenseCode;
  120. @property (nonatomic, readonly) NSString *shareCode;
  121. @property (nonatomic, readonly) NSUInteger invateUsersCount;
  122. @property (nonatomic, readonly) NSDate *fetchInvateDate;
  123. @property (nonatomic, readonly) NSString *fromCode;
  124. @property (nonatomic, readonly) NSUInteger maxFreeDays;
  125. @property (nonatomic, readonly) BOOL repeatTrial;
  126. @property (nonatomic, readonly) NSString *email;
  127. @property (nonatomic, readonly) NSString *subscriptionEmail;
  128. @property (nonatomic, readonly) NSString *accountName;
  129. @property (nonatomic, readonly) NSUInteger trialTimes;
  130. @property (nonatomic, readonly) BOOL allowUnbind;
  131. @property (nonatomic, readonly) NSInteger unbindTimes;
  132. @end
  133. #if DEBUG
  134. @interface VerificationManager (Test)
  135. - (void)updateVerificationStatus;
  136. - (void)updateStatus:(ActivityStatus)status postNo:(bool)postNo;
  137. @end
  138. #endif
  139. /// Notification
  140. extern NSString *kDeviceVerifyFinishNotification;//调用验证接口结束后发送通知
  141. extern NSString *kDeviceActivateStatusChangeNotification;