| | |
| | | pod 'WechatOpenSDK-XCFramework' # 微信开放平台组件 |
| | | pod 'CryptoSwift','1.8.3' # 常用加密算法 |
| | | pod 'APNGKit', '~> 2.3.0' |
| | | pod 'SwiftyStoreKit','~> 0.16.1' |
| | | |
| | | end |
| | |
| | | - SwifterSwift/SwiftStdlib (6.2.0) |
| | | - SwifterSwift/UIKit (6.2.0) |
| | | - SwifterSwift/WebKit (6.2.0) |
| | | - SwiftyStoreKit (0.16.1) |
| | | - TZImagePickerController (3.8.7): |
| | | - TZImagePickerController/Basic (= 3.8.7) |
| | | - TZImagePickerController/Location (= 3.8.7) |
| | |
| | | - SPPageMenu |
| | | - SVProgressHUD |
| | | - SwifterSwift |
| | | - SwiftyStoreKit (~> 0.16.1) |
| | | - WechatOpenSDK-XCFramework |
| | | |
| | | SPEC REPOS: |
| | |
| | | - SPPageMenu |
| | | - SVProgressHUD |
| | | - SwifterSwift |
| | | - SwiftyStoreKit |
| | | - TZImagePickerController |
| | | - UserDefaultsStore |
| | | - VTMagic |
| | |
| | | SPPageMenu: da182aafcec55719d5c326103cc7716c1e48f311 |
| | | SVProgressHUD: 4837c74bdfe2e51e8821c397825996a8d7de6e22 |
| | | SwifterSwift: dd00873fb09cde19da88bdb2878f9fe70fe27b0f |
| | | SwiftyStoreKit: 6b9c08810269f030586dac1fae8e75871a82e84a |
| | | TZImagePickerController: 5f35bb7266552e36ca834bafa955b869fe086124 |
| | | UserDefaultsStore: 905e30372ff432197d199ce1f6fe51be7bf69628 |
| | | VTMagic: b49e5f456dbcbfd9a3588ba92417233a105bc193 |
| | | WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f |
| | | XCGLogger: 399c5885210b4e2ad79d9f7a29b105d672ef724f |
| | | |
| | | PODFILE CHECKSUM: 60bfc4685b8b1d679e0a17e9b4032aced522a1ac |
| | | PODFILE CHECKSUM: 311e42a924c068d0394ead7c0c5aec3efd964b1b |
| | | |
| | | COCOAPODS: 1.15.2 |
| | |
| | | - SwifterSwift/SwiftStdlib (6.2.0) |
| | | - SwifterSwift/UIKit (6.2.0) |
| | | - SwifterSwift/WebKit (6.2.0) |
| | | - SwiftyStoreKit (0.16.1) |
| | | - TZImagePickerController (3.8.7): |
| | | - TZImagePickerController/Basic (= 3.8.7) |
| | | - TZImagePickerController/Location (= 3.8.7) |
| | |
| | | - SPPageMenu |
| | | - SVProgressHUD |
| | | - SwifterSwift |
| | | - SwiftyStoreKit (~> 0.16.1) |
| | | - WechatOpenSDK-XCFramework |
| | | |
| | | SPEC REPOS: |
| | |
| | | - SPPageMenu |
| | | - SVProgressHUD |
| | | - SwifterSwift |
| | | - SwiftyStoreKit |
| | | - TZImagePickerController |
| | | - UserDefaultsStore |
| | | - VTMagic |
| | |
| | | SPPageMenu: da182aafcec55719d5c326103cc7716c1e48f311 |
| | | SVProgressHUD: 4837c74bdfe2e51e8821c397825996a8d7de6e22 |
| | | SwifterSwift: dd00873fb09cde19da88bdb2878f9fe70fe27b0f |
| | | SwiftyStoreKit: 6b9c08810269f030586dac1fae8e75871a82e84a |
| | | TZImagePickerController: 5f35bb7266552e36ca834bafa955b869fe086124 |
| | | UserDefaultsStore: 905e30372ff432197d199ce1f6fe51be7bf69628 |
| | | VTMagic: b49e5f456dbcbfd9a3588ba92417233a105bc193 |
| | | WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f |
| | | XCGLogger: 399c5885210b4e2ad79d9f7a29b105d672ef724f |
| | | |
| | | PODFILE CHECKSUM: 60bfc4685b8b1d679e0a17e9b4032aced522a1ac |
| | | PODFILE CHECKSUM: 311e42a924c068d0394ead7c0c5aec3efd964b1b |
| | | |
| | | COCOAPODS: 1.15.2 |
| | |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>5</integer> |
| | | </dict> |
| | | <key>APNGKit.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>4</integer> |
| | | </dict> |
| | | <key>Alamofire-Alamofire.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>1</integer> |
| | | </dict> |
| | | <key>Alamofire.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>0</integer> |
| | | </dict> |
| | | <key>AliyunOSSiOS-AliyunOSSiOS_Privacy.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>3</integer> |
| | | </dict> |
| | | <key>AliyunOSSiOS.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>2</integer> |
| | | </dict> |
| | | <key>CryptoSwift-CryptoSwift.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>7</integer> |
| | | </dict> |
| | | <key>CryptoSwift.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>6</integer> |
| | | </dict> |
| | | <key>Delegate.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>8</integer> |
| | | </dict> |
| | | <key>Differentiator.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>9</integer> |
| | | </dict> |
| | | <key>EmptyDataSet-Swift.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>10</integer> |
| | | </dict> |
| | | <key>FFPage.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>11</integer> |
| | | </dict> |
| | | <key>HandyJSON.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>12</integer> |
| | | </dict> |
| | | <key>IQKeyboardManager-IQKeyboardManager.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>14</integer> |
| | | </dict> |
| | | <key>IQKeyboardManager.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>13</integer> |
| | | </dict> |
| | | <key>IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>16</integer> |
| | | </dict> |
| | | <key>IQKeyboardManagerSwift.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>15</integer> |
| | | </dict> |
| | | <key>JQTools-JQToolsRes.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>18</integer> |
| | | </dict> |
| | | <key>JQTools.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>17</integer> |
| | | </dict> |
| | | <key>Lantern.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>19</integer> |
| | | </dict> |
| | | <key>MJRefresh-MJRefresh.Privacy.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>21</integer> |
| | | </dict> |
| | | <key>MJRefresh.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>20</integer> |
| | | </dict> |
| | | <key>ObjcExceptionBridging-ObjcExceptionBridging.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>23</integer> |
| | | </dict> |
| | | <key>ObjcExceptionBridging.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>22</integer> |
| | | </dict> |
| | | <key>ObjectMapper-Privacy.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>25</integer> |
| | | </dict> |
| | | <key>ObjectMapper.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>24</integer> |
| | | </dict> |
| | | <key>Pods-XQMuse.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>26</integer> |
| | | </dict> |
| | | <key>QMUIKit-QMUIResources.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>28</integer> |
| | | </dict> |
| | | <key>QMUIKit.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>27</integer> |
| | | </dict> |
| | | <key>RxCocoa.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>29</integer> |
| | | </dict> |
| | | <key>RxDataSources.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>30</integer> |
| | | </dict> |
| | | <key>RxRelay.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>31</integer> |
| | | </dict> |
| | | <key>RxSwift.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>32</integer> |
| | | </dict> |
| | | <key>SDWebImage-SDWebImage.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>34</integer> |
| | | </dict> |
| | | <key>SDWebImage.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>33</integer> |
| | | </dict> |
| | | <key>SPPageMenu.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>37</integer> |
| | | </dict> |
| | | <key>SVProgressHUD.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>38</integer> |
| | | </dict> |
| | | <key>SnapKit-SnapKit_Privacy.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>36</integer> |
| | | </dict> |
| | | <key>SnapKit.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>35</integer> |
| | | </dict> |
| | | <key>SwifterSwift-SwifterSwift_Privacy.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>40</integer> |
| | | </dict> |
| | | <key>SwifterSwift.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>39</integer> |
| | | </dict> |
| | | <key>SwiftyStoreKit.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | </dict> |
| | | <key>TZImagePickerController.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>41</integer> |
| | | </dict> |
| | | <key>UserDefaultsStore.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>42</integer> |
| | | </dict> |
| | | <key>VTMagic.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>43</integer> |
| | | </dict> |
| | | <key>WechatOpenSDK-XCFramework.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>44</integer> |
| | | </dict> |
| | | <key>XCGLogger-XCGLogger.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>46</integer> |
| | | </dict> |
| | | <key>XCGLogger.xcscheme</key> |
| | | <dict> |
| | | <key>isShown</key> |
| | | <false/> |
| | | <key>orderHint</key> |
| | | <integer>45</integer> |
| | | </dict> |
| | | </dict> |
| | | <key>SuppressBuildableAutocreation</key> |
| | |
| | | THE SOFTWARE. |
| | | |
| | | |
| | | ## SwiftyStoreKit |
| | | |
| | | Copyright (c) 2015-2016 Andrea Bizzotto bizz84@gmail.com |
| | | |
| | | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: |
| | | |
| | | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. |
| | | |
| | | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| | | |
| | | |
| | | ## TZImagePickerController |
| | | |
| | | The MIT License (MIT) |
| | |
| | | </dict> |
| | | <dict> |
| | | <key>FooterText</key> |
| | | <string>Copyright (c) 2015-2016 Andrea Bizzotto bizz84@gmail.com |
| | | |
| | | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: |
| | | |
| | | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. |
| | | |
| | | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| | | </string> |
| | | <key>License</key> |
| | | <string>MIT</string> |
| | | <key>Title</key> |
| | | <string>SwiftyStoreKit</string> |
| | | <key>Type</key> |
| | | <string>PSGroupSpecifier</string> |
| | | </dict> |
| | | <dict> |
| | | <key>FooterText</key> |
| | | <string>The MIT License (MIT) |
| | | |
| | | Copyright (c) 2016 Zhen Tan |
| | |
| | | ${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework |
| | | ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework |
| | | ${BUILT_PRODUCTS_DIR}/SwifterSwift/SwifterSwift.framework |
| | | ${BUILT_PRODUCTS_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework |
| | | ${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework |
| | | ${BUILT_PRODUCTS_DIR}/UserDefaultsStore/UserDefaultsStore.framework |
| | | ${BUILT_PRODUCTS_DIR}/VTMagic/VTMagic.framework |
| | |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVProgressHUD.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwifterSwift.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyStoreKit.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TZImagePickerController.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/UserDefaultsStore.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/VTMagic.framework |
| | |
| | | ${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework |
| | | ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework |
| | | ${BUILT_PRODUCTS_DIR}/SwifterSwift/SwifterSwift.framework |
| | | ${BUILT_PRODUCTS_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework |
| | | ${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework |
| | | ${BUILT_PRODUCTS_DIR}/UserDefaultsStore/UserDefaultsStore.framework |
| | | ${BUILT_PRODUCTS_DIR}/VTMagic/VTMagic.framework |
| | |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVProgressHUD.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwifterSwift.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyStoreKit.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TZImagePickerController.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/UserDefaultsStore.framework |
| | | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/VTMagic.framework |
| | |
| | | install_framework "${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/SwifterSwift/SwifterSwift.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/UserDefaultsStore/UserDefaultsStore.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/VTMagic/VTMagic.framework" |
| | |
| | | install_framework "${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/SwifterSwift/SwifterSwift.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/UserDefaultsStore/UserDefaultsStore.framework" |
| | | install_framework "${BUILT_PRODUCTS_DIR}/VTMagic/VTMagic.framework" |
| | |
| | | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES |
| | | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO |
| | | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/APNGKit" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Delegate" "${PODS_CONFIGURATION_BUILD_DIR}/Differentiator" "${PODS_CONFIGURATION_BUILD_DIR}/EmptyDataSet-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/FFPage" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/JQTools" "${PODS_CONFIGURATION_BUILD_DIR}/Lantern" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/ObjcExceptionBridging" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/QMUIKit" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxDataSources" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SPPageMenu" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwifterSwift" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/UserDefaultsStore" "${PODS_CONFIGURATION_BUILD_DIR}/VTMagic" "${PODS_CONFIGURATION_BUILD_DIR}/XCGLogger" "${PODS_ROOT}/WechatOpenSDK-XCFramework" |
| | | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/APNGKit" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Delegate" "${PODS_CONFIGURATION_BUILD_DIR}/Differentiator" "${PODS_CONFIGURATION_BUILD_DIR}/EmptyDataSet-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/FFPage" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/JQTools" "${PODS_CONFIGURATION_BUILD_DIR}/Lantern" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/ObjcExceptionBridging" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/QMUIKit" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxDataSources" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SPPageMenu" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwifterSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/UserDefaultsStore" "${PODS_CONFIGURATION_BUILD_DIR}/VTMagic" "${PODS_CONFIGURATION_BUILD_DIR}/XCGLogger" "${PODS_ROOT}/WechatOpenSDK-XCFramework" |
| | | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 |
| | | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/APNGKit/APNGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Delegate/Delegate.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Differentiator/Differentiator.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EmptyDataSet-Swift/EmptyDataSet_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FFPage/FFPage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JQTools/JQTools.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Lantern/Lantern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QMUIKit/QMUIKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxDataSources/RxDataSources.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SPPageMenu/SPPageMenu.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD/SVProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwifterSwift/SwifterSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UserDefaultsStore/UserDefaultsStore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/VTMagic/VTMagic.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/XCGLogger/XCGLogger.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" |
| | | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/APNGKit/APNGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Delegate/Delegate.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Differentiator/Differentiator.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EmptyDataSet-Swift/EmptyDataSet_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FFPage/FFPage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JQTools/JQTools.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Lantern/Lantern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QMUIKit/QMUIKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxDataSources/RxDataSources.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SPPageMenu/SPPageMenu.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD/SVProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwifterSwift/SwifterSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UserDefaultsStore/UserDefaultsStore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/VTMagic/VTMagic.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/XCGLogger/XCGLogger.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" |
| | | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' |
| | | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift |
| | | OTHER_LDFLAGS = $(inherited) -l"WechatOpenSDK" -l"c++" -l"resolv" -l"sqlite3.0" -l"swiftCoreGraphics" -l"z" -framework "APNGKit" -framework "AVFoundation" -framework "Alamofire" -framework "AliyunOSSiOS" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreServices" -framework "CoreTelephony" -framework "CryptoSwift" -framework "Delegate" -framework "Differentiator" -framework "EmptyDataSet_Swift" -framework "FFPage" -framework "Foundation" -framework "HandyJSON" -framework "IQKeyboardManager" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "JQTools" -framework "Lantern" -framework "MJRefresh" -framework "ObjcExceptionBridging" -framework "ObjectMapper" -framework "Photos" -framework "PhotosUI" -framework "QMUIKit" -framework "QuartzCore" -framework "RxCocoa" -framework "RxDataSources" -framework "RxRelay" -framework "RxSwift" -framework "SDWebImage" -framework "SPPageMenu" -framework "SVProgressHUD" -framework "Security" -framework "SnapKit" -framework "SwifterSwift" -framework "SystemConfiguration" -framework "TZImagePickerController" -framework "UIKit" -framework "UserDefaultsStore" -framework "VTMagic" -framework "WebKit" -framework "XCGLogger" |
| | | OTHER_LDFLAGS = $(inherited) -l"WechatOpenSDK" -l"c++" -l"resolv" -l"sqlite3.0" -l"swiftCoreGraphics" -l"z" -framework "APNGKit" -framework "AVFoundation" -framework "Alamofire" -framework "AliyunOSSiOS" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreServices" -framework "CoreTelephony" -framework "CryptoSwift" -framework "Delegate" -framework "Differentiator" -framework "EmptyDataSet_Swift" -framework "FFPage" -framework "Foundation" -framework "HandyJSON" -framework "IQKeyboardManager" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "JQTools" -framework "Lantern" -framework "MJRefresh" -framework "ObjcExceptionBridging" -framework "ObjectMapper" -framework "Photos" -framework "PhotosUI" -framework "QMUIKit" -framework "QuartzCore" -framework "RxCocoa" -framework "RxDataSources" -framework "RxRelay" -framework "RxSwift" -framework "SDWebImage" -framework "SPPageMenu" -framework "SVProgressHUD" -framework "Security" -framework "SnapKit" -framework "SwifterSwift" -framework "SwiftyStoreKit" -framework "SystemConfiguration" -framework "TZImagePickerController" -framework "UIKit" -framework "UserDefaultsStore" -framework "VTMagic" -framework "WebKit" -framework "XCGLogger" |
| | | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS |
| | | PODS_BUILD_DIR = ${BUILD_DIR} |
| | | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) |
| | |
| | | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES |
| | | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO |
| | | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/APNGKit" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Delegate" "${PODS_CONFIGURATION_BUILD_DIR}/Differentiator" "${PODS_CONFIGURATION_BUILD_DIR}/EmptyDataSet-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/FFPage" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/JQTools" "${PODS_CONFIGURATION_BUILD_DIR}/Lantern" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/ObjcExceptionBridging" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/QMUIKit" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxDataSources" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SPPageMenu" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwifterSwift" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/UserDefaultsStore" "${PODS_CONFIGURATION_BUILD_DIR}/VTMagic" "${PODS_CONFIGURATION_BUILD_DIR}/XCGLogger" "${PODS_ROOT}/WechatOpenSDK-XCFramework" |
| | | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/APNGKit" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Delegate" "${PODS_CONFIGURATION_BUILD_DIR}/Differentiator" "${PODS_CONFIGURATION_BUILD_DIR}/EmptyDataSet-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/FFPage" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/JQTools" "${PODS_CONFIGURATION_BUILD_DIR}/Lantern" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/ObjcExceptionBridging" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/QMUIKit" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxDataSources" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SPPageMenu" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwifterSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/UserDefaultsStore" "${PODS_CONFIGURATION_BUILD_DIR}/VTMagic" "${PODS_CONFIGURATION_BUILD_DIR}/XCGLogger" "${PODS_ROOT}/WechatOpenSDK-XCFramework" |
| | | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 |
| | | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/APNGKit/APNGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Delegate/Delegate.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Differentiator/Differentiator.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EmptyDataSet-Swift/EmptyDataSet_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FFPage/FFPage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JQTools/JQTools.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Lantern/Lantern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QMUIKit/QMUIKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxDataSources/RxDataSources.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SPPageMenu/SPPageMenu.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD/SVProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwifterSwift/SwifterSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UserDefaultsStore/UserDefaultsStore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/VTMagic/VTMagic.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/XCGLogger/XCGLogger.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" |
| | | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/APNGKit/APNGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Delegate/Delegate.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Differentiator/Differentiator.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/EmptyDataSet-Swift/EmptyDataSet_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FFPage/FFPage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JQTools/JQTools.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Lantern/Lantern.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjcExceptionBridging/ObjcExceptionBridging.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/QMUIKit/QMUIKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxDataSources/RxDataSources.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SPPageMenu/SPPageMenu.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD/SVProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwifterSwift/SwifterSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UserDefaultsStore/UserDefaultsStore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/VTMagic/VTMagic.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/XCGLogger/XCGLogger.framework/Headers" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework/Headers" |
| | | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' |
| | | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift |
| | | OTHER_LDFLAGS = $(inherited) -l"WechatOpenSDK" -l"c++" -l"resolv" -l"sqlite3.0" -l"swiftCoreGraphics" -l"z" -framework "APNGKit" -framework "AVFoundation" -framework "Alamofire" -framework "AliyunOSSiOS" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreServices" -framework "CoreTelephony" -framework "CryptoSwift" -framework "Delegate" -framework "Differentiator" -framework "EmptyDataSet_Swift" -framework "FFPage" -framework "Foundation" -framework "HandyJSON" -framework "IQKeyboardManager" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "JQTools" -framework "Lantern" -framework "MJRefresh" -framework "ObjcExceptionBridging" -framework "ObjectMapper" -framework "Photos" -framework "PhotosUI" -framework "QMUIKit" -framework "QuartzCore" -framework "RxCocoa" -framework "RxDataSources" -framework "RxRelay" -framework "RxSwift" -framework "SDWebImage" -framework "SPPageMenu" -framework "SVProgressHUD" -framework "Security" -framework "SnapKit" -framework "SwifterSwift" -framework "SystemConfiguration" -framework "TZImagePickerController" -framework "UIKit" -framework "UserDefaultsStore" -framework "VTMagic" -framework "WebKit" -framework "XCGLogger" |
| | | OTHER_LDFLAGS = $(inherited) -l"WechatOpenSDK" -l"c++" -l"resolv" -l"sqlite3.0" -l"swiftCoreGraphics" -l"z" -framework "APNGKit" -framework "AVFoundation" -framework "Alamofire" -framework "AliyunOSSiOS" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreServices" -framework "CoreTelephony" -framework "CryptoSwift" -framework "Delegate" -framework "Differentiator" -framework "EmptyDataSet_Swift" -framework "FFPage" -framework "Foundation" -framework "HandyJSON" -framework "IQKeyboardManager" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "JQTools" -framework "Lantern" -framework "MJRefresh" -framework "ObjcExceptionBridging" -framework "ObjectMapper" -framework "Photos" -framework "PhotosUI" -framework "QMUIKit" -framework "QuartzCore" -framework "RxCocoa" -framework "RxDataSources" -framework "RxRelay" -framework "RxSwift" -framework "SDWebImage" -framework "SPPageMenu" -framework "SVProgressHUD" -framework "Security" -framework "SnapKit" -framework "SwifterSwift" -framework "SwiftyStoreKit" -framework "SystemConfiguration" -framework "TZImagePickerController" -framework "UIKit" -framework "UserDefaultsStore" -framework "VTMagic" -framework "WebKit" -framework "XCGLogger" |
| | | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS |
| | | PODS_BUILD_DIR = ${BUILD_DIR} |
| | | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) |
| | |
| | | 1300BD3C2C6DFB1C000BCA5E /* VIPCenterVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1300BD392C6DFB1C000BCA5E /* VIPCenterVC.swift */; }; |
| | | 1304526A2CB4CA310049FB3A /* XQMuseStoreKit.storekit in Resources */ = {isa = PBXBuildFile; fileRef = 130452692CB4CA310049FB3A /* XQMuseStoreKit.storekit */; }; |
| | | 1304526C2CB4CB210049FB3A /* StoreKitTestCertificate.cer in Resources */ = {isa = PBXBuildFile; fileRef = 1304526B2CB4CB210049FB3A /* StoreKitTestCertificate.cer */; }; |
| | | 1304526F2CB4FF280049FB3A /* InPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1304526E2CB4FF280049FB3A /* InPurchaseManager.swift */; }; |
| | | 130602862C9178F60019ECDE /* TreeTeskExchangeSuccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130602852C9178F60019ECDE /* TreeTeskExchangeSuccessView.swift */; }; |
| | | 130602882C91790B0019ECDE /* TreeTeskExchangeSuccessView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130602872C91790B0019ECDE /* TreeTeskExchangeSuccessView.xib */; }; |
| | | 1306028A2C917CD20019ECDE /* TreeTeskEnergyExchangeRecordVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130602892C917CD20019ECDE /* TreeTeskEnergyExchangeRecordVC.swift */; }; |
| | |
| | | 1300BD3A2C6DFB1C000BCA5E /* VIPCenterVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VIPCenterVC.xib; sourceTree = "<group>"; }; |
| | | 130452692CB4CA310049FB3A /* XQMuseStoreKit.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; path = XQMuseStoreKit.storekit; sourceTree = "<group>"; }; |
| | | 1304526B2CB4CB210049FB3A /* StoreKitTestCertificate.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = StoreKitTestCertificate.cer; sourceTree = "<group>"; }; |
| | | 1304526D2CB4D1190049FB3A /* XQMuse.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = XQMuse.entitlements; sourceTree = "<group>"; }; |
| | | 1304526E2CB4FF280049FB3A /* InPurchaseManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InPurchaseManager.swift; sourceTree = "<group>"; }; |
| | | 130602852C9178F60019ECDE /* TreeTeskExchangeSuccessView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TreeTeskExchangeSuccessView.swift; sourceTree = "<group>"; }; |
| | | 130602872C91790B0019ECDE /* TreeTeskExchangeSuccessView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TreeTeskExchangeSuccessView.xib; sourceTree = "<group>"; }; |
| | | 130602892C917CD20019ECDE /* TreeTeskEnergyExchangeRecordVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TreeTeskEnergyExchangeRecordVC.swift; sourceTree = "<group>"; }; |
| | |
| | | 13985D892C69B2410046B6DC = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 130452692CB4CA310049FB3A /* XQMuseStoreKit.storekit */, |
| | | 1304526B2CB4CB210049FB3A /* StoreKitTestCertificate.cer */, |
| | | 13985D942C69B2410046B6DC /* XQMuse */, |
| | | 13985D932C69B2410046B6DC /* Products */, |
| | | 59BB8FFC6411E59FAB177866 /* Pods */, |
| | |
| | | 13985D942C69B2410046B6DC /* XQMuse */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 1304526D2CB4D1190049FB3A /* XQMuse.entitlements */, |
| | | 13985DC92C69E9B60046B6DC /* Root */, |
| | | 13985DB32C69B7D40046B6DC /* Config */, |
| | | 13985DAE2C69B7B00046B6DC /* Base */, |
| | |
| | | 13985DB32C69B7D40046B6DC /* Config */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 1304526E2CB4FF280049FB3A /* InPurchaseManager.swift */, |
| | | 130452692CB4CA310049FB3A /* XQMuseStoreKit.storekit */, |
| | | 1304526B2CB4CB210049FB3A /* StoreKitTestCertificate.cer */, |
| | | 13A0A8A02C746ADA00DF08B6 /* Enums */, |
| | | 139C165F2C6A0FBB00A924D9 /* TestLeftRightCollectionViewFlowLayout.swift */, |
| | | 1336EFA42C6DEB550075E070 /* HoverHeaderFlowLayout.swift */, |
| | |
| | | 136C7C812C771CF3004540CD /* PayMusicVC.swift in Sources */, |
| | | 130F94662C7DAB27003A348B /* SearchHistoryCCell.swift in Sources */, |
| | | 139228AF2C6B836B006F3CB6 /* Popup_1_View.swift in Sources */, |
| | | 1304526F2CB4FF280049FB3A /* InPurchaseManager.swift in Sources */, |
| | | 1336EFA72C6DEC640075E070 /* PaymentOrderResultTopView.swift in Sources */, |
| | | 1324A64C2C80706700AA5098 /* PlanGuide_1_VC.swift in Sources */, |
| | | 13CBCCE32C747C3D00C67701 /* NoticeCenterUserRepeaceDetailVC.swift in Sources */, |
| | |
| | | buildSettings = { |
| | | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
| | | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; |
| | | CODE_SIGN_ENTITLEMENTS = XQMuse/XQMuse.entitlements; |
| | | CODE_SIGN_IDENTITY = "Apple Development"; |
| | | CODE_SIGN_STYLE = Automatic; |
| | | CURRENT_PROJECT_VERSION = 1; |
| | |
| | | buildSettings = { |
| | | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
| | | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; |
| | | CODE_SIGN_ENTITLEMENTS = XQMuse/XQMuse.entitlements; |
| | | CODE_SIGN_IDENTITY = "Apple Development"; |
| | | CODE_SIGN_STYLE = Automatic; |
| | | CURRENT_PROJECT_VERSION = 1; |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "launchScreen@2x.jpg", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | | <scenes> |
| | |
| | | <objects> |
| | | <viewController id="01J-lp-oVM" sceneMemberID="viewController"> |
| | | <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> |
| | | <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="launchScreen" translatesAutoresizingMaskIntoConstraints="NO" id="MTa-Il-dP2"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="备案号:1231231231123" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zWJ-TH-NSU"> |
| | | <rect key="frame" x="106.00000000000001" y="793.66666666666663" width="181.33333333333337" height="19.333333333333371"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="zWJ-TH-NSU" secondAttribute="bottom" constant="5" id="6gC-B5-qpe"/> |
| | | <constraint firstItem="MTa-Il-dP2" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="6qP-PH-xn1"/> |
| | | <constraint firstAttribute="bottom" secondItem="MTa-Il-dP2" secondAttribute="bottom" id="8PC-Kf-lOK"/> |
| | | <constraint firstItem="zWJ-TH-NSU" firstAttribute="centerX" secondItem="MTa-Il-dP2" secondAttribute="centerX" id="aEe-8n-eho"/> |
| | | <constraint firstItem="MTa-Il-dP2" firstAttribute="trailing" secondItem="6Tk-OE-BBY" secondAttribute="trailing" id="cbw-XJ-Oln"/> |
| | | <constraint firstItem="MTa-Il-dP2" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" id="gMR-H3-3Yf"/> |
| | | </constraints> |
| | | </view> |
| | | </viewController> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> |
| | | </objects> |
| | | <point key="canvasLocation" x="53" y="375"/> |
| | | <point key="canvasLocation" x="52.671755725190835" y="374.64788732394368"/> |
| | | </scene> |
| | | </scenes> |
| | | <resources> |
| | | <image name="launchScreen" width="585" height="1266"/> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
| | |
| | | let app = UIApplication.shared.delegate as! AppDelegate |
| | | |
| | | let locationTool = JQ_LocationTool.instance() |
| | | let ShareAppleKey = "" |
| | | |
| | | var sceneDelegate:SceneDelegate? = { |
| | | var uiScreen:UIScene? |
New file |
| | |
| | | // |
| | | // StoreTransaction.swift |
| | | // ExplorerProject |
| | | // |
| | | // Created by 无故事王国 on 2024/4/1. |
| | | // Copyright © 2024 younger_times. All rights reserved. |
| | | // |
| | | |
| | | import SwiftyStoreKit |
| | | import StoreKit |
| | | import HandyJSON |
| | | |
| | | struct PurchaseModel:HandyJSON{ |
| | | var environment: String? |
| | | var receipt:PurchaseReceiptModel? |
| | | var status: Int = 0 |
| | | } |
| | | |
| | | struct PurchaseReceiptModel:HandyJSON{ |
| | | var adam_id: Int = 0 |
| | | var app_item_id: Int = 0 |
| | | var application_version: Int = 0 |
| | | var bundle_id: String? |
| | | var download_id: Int = 0 |
| | | var in_app = [PurchageInAppModel]() |
| | | var original_application_version: String? |
| | | var original_purchase_date: String? |
| | | var original_purchase_date_ms: Int = 0 |
| | | var original_purchase_date_pst: String? |
| | | var receipt_creation_date: String? |
| | | var receipt_creation_date_ms: Int = 0 |
| | | var receipt_creation_date_pst: String? |
| | | var receipt_type: String? |
| | | var request_date: String? |
| | | var request_date_ms: Int = 0 |
| | | var request_date_pst: String? |
| | | var version_external_identifier: Int = 0 |
| | | } |
| | | |
| | | struct PurchageInAppModel:HandyJSON{ |
| | | |
| | | } |
| | | |
| | | struct PurchaseResultModel:HandyJSON{ |
| | | var environment: String? |
| | | var receipt: PurchaseReceipt? |
| | | var status: Int = 0 |
| | | } |
| | | |
| | | struct PurchaseReceipt:HandyJSON{ |
| | | var adam_id: Int = 0 |
| | | var app_item_id: Int = 0 |
| | | var application_version: String? |
| | | var bundle_id: String? |
| | | var download_id: Int = 0 |
| | | var in_app = [PurchaseInAPP]() |
| | | var original_application_version: String? |
| | | var original_purchase_date: String? |
| | | var original_purchase_date_ms: String? |
| | | var original_purchase_date_pst: String? |
| | | var receipt_creation_date: String? |
| | | var receipt_creation_date_ms: String? |
| | | var receipt_creation_date_pst: String? |
| | | var receipt_type: String? |
| | | var request_date: String? |
| | | var request_date_ms: String? |
| | | var request_date_pst: String? |
| | | var version_external_identifier: Int = 0 |
| | | } |
| | | |
| | | struct PurchaseInAPP:HandyJSON{ |
| | | var in_app_ownership_type: String? |
| | | var is_trial_period: String? |
| | | var original_purchase_date: String? |
| | | var original_purchase_date_ms: String? |
| | | var original_purchase_date_pst: String? |
| | | var original_transaction_id: String? |
| | | var product_id: String? |
| | | var purchase_date: String? |
| | | var purchase_date_ms: String? |
| | | var purchase_date_pst: String? |
| | | var quantity: String? |
| | | var transaction_id: String? |
| | | |
| | | } |
| | | |
| | | class InPurchaseManager:NSObject{ |
| | | |
| | | private static var _sharedInstance: InPurchaseManager! |
| | | private var productList = Set<String>() |
| | | private(set) var products = Set<SKProduct>() |
| | | |
| | | @discardableResult |
| | | public class func instance() -> InPurchaseManager { |
| | | guard let instance = _sharedInstance else { |
| | | _sharedInstance = InPurchaseManager() |
| | | return _sharedInstance! |
| | | } |
| | | return instance |
| | | } |
| | | |
| | | func setProductList(_ list:Set<String>,clouse:@escaping (Set<SKProduct>)->Void){ |
| | | productList = list |
| | | |
| | | SwiftyStoreKit.retrieveProductsInfo(list) { result in |
| | | if result.retrievedProducts.count > 0 { |
| | | InPurchaseManager._sharedInstance.products = result.retrievedProducts |
| | | clouse(result.retrievedProducts) |
| | | } |
| | | } |
| | | } |
| | | |
| | | func getIPAPrice(_ price:Int,clouse:@escaping (SKProduct)->Void){ |
| | | var ipaId = "" |
| | | switch price { |
| | | case 98: ipaId = "com.jkfitness.a.price.1" |
| | | case 298:ipaId = "com.jkfitness.a.price.2" |
| | | case 488:ipaId = "com.jkfitness.a.price.3" |
| | | case 698:ipaId = "com.jkfitness.a.price.4" |
| | | case 998:ipaId = "com.jkfitness.a.price.5" |
| | | default:break |
| | | } |
| | | |
| | | var productIds = Set<String>() |
| | | productIds.insert(ipaId) |
| | | |
| | | InPurchaseManager.instance().setProductList(productIds) {products in |
| | | if let product = products.first{ |
| | | clouse(product) |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | func dismiss(){ |
| | | InPurchaseManager._sharedInstance = nil |
| | | } |
| | | |
| | | /// 购买 |
| | | /// - Parameters: |
| | | /// - ID: ID值 |
| | | /// - quantity: 购买数量 |
| | | /// - applicationUsername: 购买用户名的唯一标识 |
| | | class func purchaseProduct(ID:String,quantity:Int = 1,applicationUsername:String, completion: @escaping ( PurchaseResultModel) -> Void,errorClouse:@escaping (Error)->Void){ |
| | | var purcahseProduct:SKProduct? |
| | | for product in _sharedInstance.products { |
| | | if product.productIdentifier == ID{ |
| | | purcahseProduct = product;break |
| | | } |
| | | } |
| | | |
| | | guard let product = purcahseProduct else {return} |
| | | var inSanbox:Bool = false |
| | | |
| | | #if DEBUG |
| | | inSanbox = true |
| | | #endif |
| | | |
| | | SwiftyStoreKit.completeTransactions { purchases in |
| | | if let product = purchases.first{ |
| | | switch product.transaction.transactionState { |
| | | case .purchased: |
| | | alertSuccess(msg: "完成购买") |
| | | case .purchasing: |
| | | showHUD("购买中") |
| | | case .failed: |
| | | alertError(msg: "购买失败") |
| | | case .restored: |
| | | alertSuccess(msg: "恢复购买") |
| | | default:break |
| | | } |
| | | } |
| | | } |
| | | |
| | | SwiftyStoreKit.purchaseProduct(product, quantity: quantity, atomically: true, applicationUsername: applicationUsername, simulatesAskToBuyInSandbox: false, paymentDiscount: nil) { result in |
| | | switch result { |
| | | case .success(let purchase): |
| | | var type:AppleReceiptValidator.VerifyReceiptURLType = .production |
| | | if inSanbox{ |
| | | type = .sandbox |
| | | } |
| | | |
| | | var recepit = AppleReceiptValidator(service: type, sharedSecret: nil) |
| | | SwiftyStoreKit.verifyReceipt(using: recepit) { result in |
| | | switch result { |
| | | case .success(let receipt): |
| | | if let model = PurchaseResultModel.deserialize(from: receipt){ |
| | | completion(model) |
| | | } |
| | | break |
| | | case .error(let error): |
| | | errorClouse(error) |
| | | // print(error.localizedDescription) |
| | | } |
| | | } |
| | | case .error(let error): |
| | | // print(error.localizedDescription) |
| | | errorClouse(error) |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// 恢复购买 |
| | | class func resotrePurchase(applicationUsername:String, completion: @escaping ( PurchaseResultModel) -> Void,errorClouse:@escaping (Error)->Void){ |
| | | |
| | | SwiftyStoreKit.completeTransactions { purchases in |
| | | if let product = purchases.first{ |
| | | switch product.transaction.transactionState { |
| | | case .purchased: |
| | | alertSuccess(msg: "完成购买") |
| | | case .purchasing: |
| | | showHUD("购买中") |
| | | case .failed: |
| | | alertError(msg: "购买失败") |
| | | case .restored: |
| | | alertSuccess(msg: "恢复购买") |
| | | default:break |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | SwiftyStoreKit.restorePurchases(atomically: true, applicationUsername: applicationUsername) { result in |
| | | if result.restoreFailedPurchases.count > 0 { |
| | | //恢复失败 |
| | | print("restore Failed:\(result.restoredPurchases)") |
| | | }else if result.restoredPurchases.count > 0 { |
| | | print("restore Success") |
| | | var inSanbox:Bool = false |
| | | |
| | | #if DEBUG |
| | | inSanbox = true |
| | | #endif |
| | | var type:AppleReceiptValidator.VerifyReceiptURLType = .production |
| | | if inSanbox{ |
| | | type = .sandbox |
| | | } |
| | | let recepit = AppleReceiptValidator(service: type, sharedSecret: nil) |
| | | SwiftyStoreKit.verifyReceipt(using: recepit) { result in |
| | | switch result { |
| | | case .success(let receipt): |
| | | if let model = PurchaseResultModel.deserialize(from: receipt){ |
| | | completion(model) |
| | | } |
| | | break |
| | | case .error(let error): |
| | | errorClouse(error) |
| | | } |
| | | } |
| | | }else{ |
| | | print("Nothing to Restore") |
| | | } |
| | | } |
| | | } |
| | | |
| | | //获取APP 首次安装时间 |
| | | func test1(){ |
| | | |
| | | let queue = DispatchQueue(label: "inapppurchasequeue") |
| | | queue.async { |
| | | let receiptURL = Bundle.main.appStoreReceiptURL |
| | | guard receiptURL?.path != nil else { return } |
| | | do { |
| | | let receiptData = try Data(contentsOf: receiptURL!, options: .alwaysMapped) |
| | | let base64EncodedReceipt = receiptData.base64EncodedString(options: []) |
| | | var verifyReceipt:String = AppleReceiptValidator.VerifyReceiptURLType.sandbox.rawValue |
| | | #if !DEBUG |
| | | verifyReceipt = AppleReceiptValidator.VerifyReceiptURLType.production.rawValue |
| | | #endif |
| | | let purchaseURL = URL(string: verifyReceipt)! |
| | | |
| | | var request = URLRequest(url: purchaseURL) |
| | | request.httpMethod = "POST" |
| | | request.setValue("application/json", forHTTPHeaderField: "Content-Type") |
| | | |
| | | let jsonBody: [String: Any] = [ |
| | | "receipt-data": base64EncodedReceipt, |
| | | "password": ShareAppleKey // 你的共享密钥 |
| | | ] |
| | | |
| | | let jsonData = try JSONSerialization.data(withJSONObject: jsonBody, options: []) |
| | | request.httpBody = jsonData |
| | | |
| | | let session = URLSession.shared |
| | | let task = session.dataTask(with: request) { (data, response, error) in |
| | | if let error = error {return} |
| | | guard let data = data else { return } |
| | | do { |
| | | if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { |
| | | print(json) |
| | | if let purchageModel = PurchaseModel.deserialize(from: json),purchageModel.status == 0{ |
| | | |
| | | } |
| | | } |
| | | } catch { |
| | | print("JSON processing failed: \(error)") |
| | | } |
| | | } |
| | | task.resume() |
| | | } catch { |
| | | print("Error reading receipt data: \(error)") |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | case pwd,code |
| | | } |
| | | |
| | | enum ThreePlantformLoginType:Int{ |
| | | case wechat = 1 |
| | | case apple = 2 |
| | | } |
| | | |
| | | enum AgreementType:Int,HandyJSONEnum{ |
| | | case none = 0 |
| | | ///用户协议 |
New file |
| | |
| | | { |
| | | "appPolicies" : { |
| | | "eula" : "", |
| | | "policies" : [ |
| | | { |
| | | "locale" : "en_US", |
| | | "policyText" : "", |
| | | "policyURL" : "" |
| | | } |
| | | ] |
| | | }, |
| | | "identifier" : "3D29D5F7", |
| | | "nonRenewingSubscriptions" : [ |
| | | { |
| | | "displayPrice" : "299", |
| | | "familyShareable" : false, |
| | | "internalID" : "7BDE4968", |
| | | "localizations" : [ |
| | | { |
| | | "description" : "购买一个月会员", |
| | | "displayName" : "一个月会员", |
| | | "locale" : "zh_CN" |
| | | } |
| | | ], |
| | | "productID" : "com.XQMuse.VIP.month.0", |
| | | "referenceName" : "购买一个月会员", |
| | | "type" : "NonRenewingSubscription" |
| | | }, |
| | | { |
| | | "displayPrice" : "499", |
| | | "familyShareable" : false, |
| | | "internalID" : "DDDE321B", |
| | | "localizations" : [ |
| | | { |
| | | "description" : "购买6个月会员", |
| | | "displayName" : "半年会员", |
| | | "locale" : "zh_CN" |
| | | } |
| | | ], |
| | | "productID" : "com.XQMuse.VIP.semester.0", |
| | | "referenceName" : "购买半年会员", |
| | | "type" : "NonRenewingSubscription" |
| | | }, |
| | | { |
| | | "displayPrice" : "499", |
| | | "familyShareable" : false, |
| | | "internalID" : "436E2DBE", |
| | | "localizations" : [ |
| | | { |
| | | "description" : "购买12个月会员", |
| | | "displayName" : "年度会员", |
| | | "locale" : "zh_CN" |
| | | } |
| | | ], |
| | | "productID" : "com.XQMuse.VIP.year.0", |
| | | "referenceName" : "购买年度会员", |
| | | "type" : "NonRenewingSubscription" |
| | | } |
| | | ], |
| | | "products" : [ |
| | | { |
| | | "displayPrice" : "0.99", |
| | | "familyShareable" : false, |
| | | "internalID" : "521CE106", |
| | | "localizations" : [ |
| | | { |
| | | "description" : "购买10颗疗愈币", |
| | | "displayName" : "10币", |
| | | "locale" : "zh_CN" |
| | | } |
| | | ], |
| | | "productID" : "com.XQMuse.p.0", |
| | | "referenceName" : "充值10疗愈币", |
| | | "type" : "Consumable" |
| | | }, |
| | | { |
| | | "displayPrice" : "1.99", |
| | | "familyShareable" : false, |
| | | "internalID" : "E7DC523B", |
| | | "localizations" : [ |
| | | { |
| | | "description" : "购买20颗疗愈币", |
| | | "displayName" : "20币", |
| | | "locale" : "zh_CN" |
| | | } |
| | | ], |
| | | "productID" : "com.XQMuse.p.1", |
| | | "referenceName" : "充值20疗愈币", |
| | | "type" : "Consumable" |
| | | }, |
| | | { |
| | | "displayPrice" : "2.99", |
| | | "familyShareable" : false, |
| | | "internalID" : "6AD670BC", |
| | | "localizations" : [ |
| | | { |
| | | "description" : "购买50颗疗愈币", |
| | | "displayName" : "50币", |
| | | "locale" : "zh_CN" |
| | | } |
| | | ], |
| | | "productID" : "com.XQMuse.p.2", |
| | | "referenceName" : "充值50疗愈币", |
| | | "type" : "Consumable" |
| | | }, |
| | | { |
| | | "displayPrice" : "3.99", |
| | | "familyShareable" : false, |
| | | "internalID" : "C8E195D0", |
| | | "localizations" : [ |
| | | { |
| | | "description" : "购买100颗疗愈币", |
| | | "displayName" : "100币", |
| | | "locale" : "zh_CN" |
| | | } |
| | | ], |
| | | "productID" : "com.XQMuse.p.3", |
| | | "referenceName" : "充值100疗愈币", |
| | | "type" : "Consumable" |
| | | } |
| | | ], |
| | | "settings" : { |
| | | "_billingGracePeriodEnabled" : true, |
| | | "_failTransactionsEnabled" : false, |
| | | "_locale" : "zh_CN", |
| | | "_storefront" : "CHN", |
| | | "_storeKitErrors" : [ |
| | | { |
| | | "current" : null, |
| | | "enabled" : false, |
| | | "name" : "Load Products" |
| | | }, |
| | | { |
| | | "current" : null, |
| | | "enabled" : false, |
| | | "name" : "Purchase" |
| | | }, |
| | | { |
| | | "current" : null, |
| | | "enabled" : false, |
| | | "name" : "Verification" |
| | | }, |
| | | { |
| | | "current" : { |
| | | "index" : 2, |
| | | "type" : "generic" |
| | | }, |
| | | "enabled" : false, |
| | | "name" : "App Store Sync" |
| | | }, |
| | | { |
| | | "current" : null, |
| | | "enabled" : false, |
| | | "name" : "Subscription Status" |
| | | }, |
| | | { |
| | | "current" : { |
| | | "index" : 3, |
| | | "type" : "generic" |
| | | }, |
| | | "enabled" : false, |
| | | "name" : "App Transaction" |
| | | }, |
| | | { |
| | | "current" : null, |
| | | "enabled" : false, |
| | | "name" : "Manage Subscriptions Sheet" |
| | | }, |
| | | { |
| | | "current" : null, |
| | | "enabled" : false, |
| | | "name" : "Refund Request Sheet" |
| | | }, |
| | | { |
| | | "current" : null, |
| | | "enabled" : false, |
| | | "name" : "Offer Code Redeem Sheet" |
| | | } |
| | | ] |
| | | }, |
| | | "subscriptionGroups" : [ |
| | | { |
| | | "id" : "1B73E9E9", |
| | | "localizations" : [ |
| | | |
| | | ], |
| | | "name" : "Years", |
| | | "subscriptions" : [ |
| | | { |
| | | "adHocOffers" : [ |
| | | { |
| | | "internalID" : "B4ECD233", |
| | | "offerID" : "LAJ234QMZ5801AAC", |
| | | "paymentMode" : "free", |
| | | "referenceName" : "促销码", |
| | | "subscriptionPeriod" : "P1Y" |
| | | } |
| | | ], |
| | | "codeOffers" : [ |
| | | { |
| | | "displayPrice" : "200", |
| | | "eligibility" : [ |
| | | "existing", |
| | | "expired", |
| | | "new" |
| | | ], |
| | | "internalID" : "F62AF748", |
| | | "isStackable" : true, |
| | | "paymentMode" : "payUpFront", |
| | | "referenceName" : "促销", |
| | | "subscriptionPeriod" : "P6M" |
| | | } |
| | | ], |
| | | "displayPrice" : "149", |
| | | "familyShareable" : false, |
| | | "groupNumber" : 1, |
| | | "internalID" : "D8314451", |
| | | "introductoryOffer" : { |
| | | "displayPrice" : "0.99", |
| | | "internalID" : "89D5DFC5", |
| | | "paymentMode" : "free", |
| | | "subscriptionPeriod" : "P3D" |
| | | }, |
| | | "localizations" : [ |
| | | { |
| | | "description" : "包年", |
| | | "displayName" : "包年年度会员", |
| | | "locale" : "zh_CN" |
| | | } |
| | | ], |
| | | "productID" : "com.XQMuse.VIP.year.renewing.0", |
| | | "recurringSubscriptionPeriod" : "P1Y", |
| | | "referenceName" : "购买年度会员(持续订阅)", |
| | | "subscriptionGroupID" : "1B73E9E9", |
| | | "type" : "RecurringSubscription", |
| | | "winbackOffers" : [ |
| | | |
| | | ] |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | "version" : { |
| | | "major" : 4, |
| | | "minor" : 0 |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | @objc func settingvoiceAction(){ |
| | | let vc = BackgroundVoiceVC() |
| | | push(vc: vc) |
| | | // let vc = BackgroundVoiceVC() |
| | | // push(vc: vc) |
| | | |
| | | // let nav = LoginNav(rootViewController: LoginVC()) |
| | | // nav.modalPresentationStyle = .fullScreen |
| | | // present(nav, animated: true) |
| | | let nav = LoginNav(rootViewController: LoginVC()) |
| | | nav.modalPresentationStyle = .fullScreen |
| | | present(nav, animated: true) |
| | | } |
| | | |
| | | @objc func jumpMoreAction(_ sender:UIButton){ |
| | |
| | | import JQTools |
| | | import RxRelay |
| | | import QMUIKit |
| | | import AuthenticationServices |
| | | |
| | | |
| | | class LoginViewModel{ |
| | |
| | | } |
| | | } |
| | | |
| | | let LoginDismiss_Noti = Notification.Name.init("LoginDismiss_Noti") |
| | | |
| | | class LoginVC: BaseVC { |
| | | |
| | | @IBOutlet weak var btn_loginByPwd: UIButton! |
| | |
| | | @IBOutlet weak var btn_login: UIButton! |
| | | @IBOutlet weak var btn_sendCode: UIButton! |
| | | @IBOutlet weak var btn_isRead: UIButton! |
| | | |
| | | |
| | | private var viewModel = LoginViewModel() |
| | | |
| | |
| | | self.view.layoutIfNeeded() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | NotificationCenter.default.rx.notification(LoginDismiss_Noti).take(until: self.rx.deallocated).subscribe(onNext: { _ in |
| | | self.backAction() |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | override func setUI() { |
| | | |
| | | navigationItem.leftBarButtonItem = UIBarButtonItem.jq_creat(image: nav_back_img, target: self, alignment:.left, action: #selector(backAction)).item |
| | | |
| | | btn_eye.isSelected = true |
| | | view.addSubview(unlineImageView) |
| | | unlineImageView.snp.makeConstraints { make in |
| | |
| | | |
| | | btn_register.setAttributedTitle(btn_attribute, for: .normal) |
| | | } |
| | | |
| | | @objc fileprivate func backAction() { |
| | | self.dismiss(animated: true) |
| | | } |
| | | |
| | | |
| | | @IBAction func loginTypeAction(_ sender: UIButton) { |
| | |
| | | } |
| | | |
| | | @IBAction func loginByWechatAction(_ sender: UIButton) { |
| | | guard btn_isRead.isSelected else { |
| | | alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | } |
| | | //todo |
| | | } |
| | | |
| | | @IBAction func loginByAppleAction(_ sender: UIButton) { |
| | | //todo |
| | | guard btn_isRead.isSelected else { |
| | | alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | } |
| | | |
| | | let provider = ASAuthorizationAppleIDProvider() //主要作用是用创建相应的请求,查询用户授权状态 |
| | | let request = provider.createRequest() //授权请求,可以设置具体的请求信息 |
| | | request.requestedScopes = [.fullName,.email] |
| | | let vc = ASAuthorizationController(authorizationRequests: [request]) //发送请求控制器,可以设置相应的协议 |
| | | vc.delegate = self |
| | | vc.presentationContextProvider = self |
| | | vc.performRequests() |
| | | } |
| | | |
| | | @IBAction func forgotPwdAction(_ sender: UIButton) { |
| | |
| | | btn_login.jq_gradientNibColor(colorArr: [UIColor(hexStr: "#8EA47A").cgColor,UIColor(hexStr: "#AFCA98").cgColor], cornerRadius: 20) |
| | | } |
| | | } |
| | | |
| | | extension LoginVC:ASAuthorizationControllerPresentationContextProviding{ |
| | | func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor { |
| | | return self.view.window! |
| | | } |
| | | } |
| | | extension LoginVC:ASAuthorizationControllerDelegate{ |
| | | func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) { |
| | | if let credential = authorization.credential as? ASAuthorizationAppleIDCredential{ |
| | | |
| | | Services.loginByApple(appleId: credential.user).subscribe(onNext: {data in |
| | | if var m = data.data,m.bindStatus == 2{ |
| | | sceneDelegate?.loginSuccess() |
| | | m.loginByAppleToken = String(data: credential.identityToken!, encoding: .utf8) |
| | | m.appleId = credential.user |
| | | |
| | | self.dismiss(animated: true) |
| | | |
| | | UserViewModel.saveLoginInfo(m) |
| | | |
| | | Services.getUserInfo().subscribe(onNext: {data in |
| | | if let model = data.data{ |
| | | UserViewModel.saveAvatarInfo(model) |
| | | } |
| | | }).disposed(by: self.disposeBag) |
| | | }else{ |
| | | let vc = UpdatePhoneVC(credential: credential) |
| | | self.jq_push(vc: vc) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | |
| | | |
| | | // print(credential.user) |
| | | // print(credential.state) |
| | | // print(credential.email) |
| | | // print(credential.fullName?.familyName) |
| | | // print(credential.fullName?.givenName) |
| | | // print(credential.fullName?.middleName) |
| | | // print(String(data: credential.identityToken!, encoding: .utf8)) |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) { |
| | | switch (error as! ASAuthorizationError).code { |
| | | case .canceled:print("用户取消") |
| | | case .failed:print("请求失败") |
| | | case .invalidResponse:print("无效响应") |
| | | case .notHandled:print("未处理") |
| | | case .unknown:print("未知错误") |
| | | case .notInteractive:print("未交互") |
| | | case .matchedExcludedCredential:print("排除的凭证匹配") |
| | | @unknown default:break |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | // |
| | | |
| | | import UIKit |
| | | import AuthenticationServices |
| | | import QMUIKit |
| | | import JQTools |
| | | |
| | | class UpdatePhoneVC: BaseVC { |
| | | |
| | | private var credential:ASAuthorizationAppleIDCredential? |
| | | @IBOutlet weak var tf_phone: QMUITextField! |
| | | @IBOutlet weak var tf_code: QMUITextField! |
| | | @IBOutlet weak var btn_code: UIButton! |
| | | @IBOutlet weak var btn_isRead: UIButton! |
| | | |
| | | init(credential:ASAuthorizationAppleIDCredential? = nil) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.credential = credential |
| | | } |
| | | |
| | | @MainActor required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "验证手机号" |
| | | |
| | | } |
| | | |
| | | @IBAction func getCodeAction(_ sender: UIButton) { |
| | | view.endEditing(true) |
| | | guard tf_phone.text!.jq_isPhone else { |
| | | alertError(msg: "请输入正确的手机号");return |
| | | } |
| | | |
| | | Services.sendCode(type: .threePlantform).subscribe(onNext: {data in |
| | | if let _ = data.data{ |
| | | sender.jq_openCountDown(60, defultTitle: "发送验证码") { |
| | | sender.titleLabel?.font = UIFont.systemFont(ofSize: 12) |
| | | sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal) |
| | | } completeClouse: { |
| | | sender.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .medium) |
| | | sender.setTitleColor(UIColor(hexStr: "#96AD81"), for: .normal) |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | @IBAction func loginAction(_ sender: UIButton) { |
| | | view.endEditing(true) |
| | | guard tf_phone.text!.jq_isPhone else { |
| | | alertError(msg: "请输入正确的手机号");return |
| | | } |
| | | |
| | | guard tf_code.text!.count == 6 else { |
| | | alertError(msg: "请输入6位验证码");return |
| | | } |
| | | guard let credentialUser = credential?.user else { |
| | | alertError(msg: "Apple登录授权异常");return |
| | | } |
| | | |
| | | let formatName = String(format: "%@%@%@", credential?.fullName?.familyName ?? "",credential?.fullName?.middleName ?? "", credential?.fullName?.middleName ?? "") |
| | | |
| | | Services.confirmByApple(cellPhone: tf_phone.text!, captcha: tf_code.text!, loginType: .apple, wxOrAppleId: credentialUser,name: formatName, mail: credential!.email).subscribe(onNext: {data in |
| | | if var model = data.data{ |
| | | model.loginByAppleToken = String(data: self.credential!.identityToken!, encoding: .utf8) |
| | | model.appleId = self.credential!.user |
| | | sceneDelegate?.loginSuccess() |
| | | NotificationCenter.default.post(name: LoginDismiss_Noti, object: nil, userInfo: nil) |
| | | UserViewModel.saveLoginInfo(model) |
| | | |
| | | Services.getUserInfo().subscribe(onNext: {data in |
| | | if let model = data.data{ |
| | | UserViewModel.saveAvatarInfo(model) |
| | | } |
| | | }).disposed(by: self.disposeBag) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="UpdatePhoneVC" customModule="XQMuse" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="btn_code" destination="pAD-ql-bis" id="gkz-bG-PbG"/> |
| | | <outlet property="btn_isRead" destination="hpl-B3-jCO" id="l58-Ul-7rb"/> |
| | | <outlet property="tf_code" destination="rC4-Ho-VwS" id="2Nj-Fu-JKi"/> |
| | | <outlet property="tf_phone" destination="Sho-Vk-2J3" id="7t2-1d-4hW"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="验证手机" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="b9O-q9-hJ2"> |
| | | <rect key="frame" x="30.999999999999993" y="90" width="89.333333333333314" height="26"/> |
| | | <rect key="frame" x="31" y="90" width="84" height="26"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="26" id="agb-Na-9S0"/> |
| | | </constraints> |
| | |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="为了您的账号安全,请验证一个手机号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="g5y-td-c0h"> |
| | | <rect key="frame" x="31" y="131" width="243" height="14"/> |
| | | <rect key="frame" x="30.999999999999986" y="131" width="236.66666666666663" height="14"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="14" id="m6g-JN-uC9"/> |
| | | </constraints> |
| | |
| | | </userDefinedRuntimeAttributes> |
| | | </textField> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pAD-ql-bis"> |
| | | <rect key="frame" x="259" y="16.666666666666657" width="72" height="29"/> |
| | | <rect key="frame" x="261" y="16.666666666666657" width="70" height="29"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="获取验证码"> |
| | | <color key="titleColor" red="0.58823529409999997" green="0.67843137249999996" blue="0.50588235290000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <connections> |
| | | <action selector="getCodeAction:" destination="-1" eventType="touchUpInside" id="xNi-pB-wYu"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | |
| | | <state key="selected" image="btn_choose_s"/> |
| | | </button> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我已阅读并同意" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="38g-LO-yZD"> |
| | | <rect key="frame" x="57" y="350" width="86" height="14.333333333333314"/> |
| | | <rect key="frame" x="57.000000000000007" y="350" width="83.666666666666686" height="14.333333333333314"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="U8y-71-Mhb"> |
| | | <rect key="frame" x="243" y="343.66666666666669" width="87" height="27"/> |
| | | <rect key="frame" x="237.66666666666663" y="343.66666666666669" width="84" height="27"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="《用户隐私协议》"> |
| | |
| | | </state> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ztb-yJ-wp8"> |
| | | <rect key="frame" x="148" y="343.66666666666669" width="87" height="27"/> |
| | | <rect key="frame" x="145.66666666666666" y="343.66666666666669" width="84" height="27"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="《用户注册协议》"> |
| | |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="loginAction:" destination="-1" eventType="touchUpInside" id="15B-Bf-ee1"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | |
| | | self.image_qrCode.image = self.customerImage |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressCopyAction(_:))) |
| | | longPress.minimumPressDuration = 0.8 |
| | | image_qrCode.isUserInteractionEnabled = true |
| | | image_qrCode.addGestureRecognizer(longPress) |
| | | } |
| | | |
| | | @objc private func longPressCopyAction(_ gesture:UILongPressGestureRecognizer){ |
| | | if gesture.state == .began{ |
| | | if let img = image_qrCode.image{ |
| | | image_qrCode.isUserInteractionEnabled = false |
| | | UIImageWriteToSavedPhotosAlbum(img, nil,nil, nil) |
| | | alertSuccess(msg: "保存成功") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | |
| | | <constraint firstAttribute="bottom" secondItem="5jI-tQ-uLM" secondAttribute="bottom" id="g7M-oD-LE2"/> |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="扫码添加客服微信" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fc3-8Q-v5s"> |
| | | <rect key="frame" x="143.33333333333334" y="251.99999999999997" width="106.33333333333334" height="12.666666666666657"/> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fc3-8Q-v5s"> |
| | | <rect key="frame" x="145" y="252.00000000000003" width="103.33333333333331" height="31.333333333333343"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="12.5" id="GbW-jb-gwo"/> |
| | | <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="12.5" id="GbW-jb-gwo"/> |
| | | </constraints> |
| | | <string key="text">扫码添加客服微信 |
| | | (长按保存图片)</string> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <rect key="frame" x="0.0" y="339.66666666666674" width="393" height="478.33333333333326"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="问题类型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aYd-s7-IT0"> |
| | | <rect key="frame" x="18.000000000000004" y="31.999999999999996" width="61.333333333333343" height="14.333333333333332"/> |
| | | <rect key="frame" x="17.999999999999996" y="31.999999999999996" width="59.666666666666657" height="14.333333333333332"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="14.5" id="ZBR-Iq-kZa"/> |
| | | </constraints> |
| | |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | import StoreKit |
| | | |
| | | class VIPCenterVC: BaseVC { |
| | | |
| | | @IBOutlet weak var collectionView: UICollectionView! |
| | | private var selectIndex = 0 |
| | | @IBOutlet weak var btn_isRead: UIButton! |
| | | private var selectIndex = 0 |
| | | |
| | | private var productList = Set<String>() |
| | | private var products = [SKProduct]() |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "会员中心" |
| | | |
| | | productList.insert("com.XQMuse.VIP.month.0") |
| | | productList.insert("com.XQMuse.VIP.semester.0") |
| | | productList.insert("com.XQMuse.VIP.year.0") |
| | | productList.insert("com.XQMuse.VIP.year.renewing.0") |
| | | |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.showsHorizontalScrollIndicator = false |
| | | collectionView.contentInset = UIEdgeInsets(top: 0, left: 15, bottom: 0, right: 15) |
| | | collectionView.register(VipCenterCCell.self, forCellWithReuseIdentifier: "cell") |
| | | |
| | | InPurchaseManager.instance().setProductList(productList) { products in |
| | | self.products = Array(products) |
| | | self.products.sort { p1, p2 in |
| | | return p1.price.doubleValue < p2.price.doubleValue |
| | | } |
| | | self.collectionView.reloadData() |
| | | } |
| | | } |
| | | |
| | | @IBAction func completeAction(_ sender: UIButton) { |
| | | guard btn_isRead.isSelected else { |
| | | alert(msg: "请先阅读并同意《会员用户协议》");return |
| | | } |
| | | |
| | | |
| | | let product = products[selectIndex] |
| | | |
| | | InPurchaseManager.purchaseProduct(ID: product.productIdentifier, applicationUsername: "") { m in |
| | | |
| | | } errorClouse: { error in |
| | | alertError(msg: error.localizedDescription) |
| | | } |
| | | } |
| | | |
| | | @IBAction func readAction(_ sender: UIButton) { |
| | | btn_isRead.isSelected = !btn_isRead.isSelected |
| | | |
| | | } |
| | | |
| | | @IBAction func agreementAction(_ sender: UIButton) { |
| | | let vc = WebVC(type: .user) |
| | | push(vc: vc) |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! VipCenterCCell |
| | | cell.isSelect(indexPath.row == selectIndex) |
| | | let product = products[indexPath.row] |
| | | cell.isSelect(indexPath.row == selectIndex,product: product) |
| | | return cell |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | | return 5 |
| | | return products.count |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | class VipCenterCCell:UICollectionViewCell{ |
| | | |
| | | private var label_title:UILabel! |
| | | private var label_price:UILabel! |
| | | private var lable_priorDay:UILabel! |
| | | private(set) var label_title:UILabel! |
| | | private(set) var label_price:UILabel! |
| | | private(set) var lable_priorDay:UILabel! |
| | | |
| | | override init(frame: CGRect) { |
| | | super.init(frame: frame) |
| | |
| | | |
| | | func setUI(){ |
| | | label_title = UILabel() |
| | | label_title.text = "年度会员" |
| | | label_title.text = "--会员" |
| | | label_title.textAlignment = .center |
| | | label_title.textColor = UIColor(hexString: "#353535") |
| | | label_title.font = .systemFont(ofSize: 16, weight: .medium) |
| | |
| | | } |
| | | } |
| | | |
| | | func isSelect(_ state:Bool){ |
| | | func isSelect(_ state:Bool,product:SKProduct){ |
| | | label_title.text = product.localizedTitle |
| | | let priorDayPrice = product.price.doubleValue / 365.0 |
| | | lable_priorDay.text = String(format:"%@%@/天", product.priceLocale.currencySymbol!,priorDayPrice.jq_formatFloat) |
| | | if state{ |
| | | contentView.backgroundColor = UIColor(hexString: "#A6C586") |
| | | label_title.textColor = .white |
| | | lable_priorDay.textColor = .white |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: .white).add(string: "199", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: .white).mutableAttributedString |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: product.priceLocale.currencySymbol!, withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: .white).add(string: "\(product.price.intValue)", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: .white).mutableAttributedString |
| | | }else{ |
| | | contentView.backgroundColor = UIColor(hexString: "#EFF2F2") |
| | | label_title.textColor = UIColor(hexString: "#353535") |
| | | lable_priorDay.textColor = UIColor(hexString: "#B7B7B7") |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: UIColor(hexString: "#353535")!).add(string: "199", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: UIColor(hexString: "#353535")!).mutableAttributedString |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: product.priceLocale.currencySymbol!, withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: UIColor(hexString: "#353535")!).add(string: "\(product.price.intValue)", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: UIColor(hexString: "#353535")!).mutableAttributedString |
| | | } |
| | | } |
| | | |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="VIPCenterVC" customModule="XQMuse" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="btn_isRead" destination="6ZY-8B-NMH" id="vPj-36-S58"/> |
| | | <outlet property="collectionView" destination="Ue5-Zy-CjC" id="lPV-ex-sdB"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="365" height="113.33333333333333"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="心泉·疗愈会员" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YxW-A0-Oga"> |
| | | <rect key="frame" x="19.666666666666657" y="23.333333333333329" width="151" height="21"/> |
| | | <rect key="frame" x="19.666666666666657" y="23.333333333333329" width="142" height="21"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="21" id="jjF-Bb-zsz"/> |
| | | </constraints> |
| | |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="升级为高级会员,解锁全部体验" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="teL-7U-G1S"> |
| | | <rect key="frame" x="19" y="85.999999999999986" width="143.33333333333334" height="12"/> |
| | | <rect key="frame" x="19" y="85.999999999999986" width="139.33333333333334" height="12"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="10"/> |
| | | <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="VIP会员套餐" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yWI-Sm-wHz"> |
| | | <rect key="frame" x="31.666666666666664" y="197" width="102.66666666666669" height="21"/> |
| | | <rect key="frame" x="31.666666666666664" y="197" width="100.66666666666669" height="21"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="18"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <real key="value" value="26.75"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="completeAction:" destination="-1" eventType="touchUpInside" id="MTC-Lr-yt7"/> |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6ZY-8B-NMH"> |
| | | <rect key="frame" x="22" y="76.666666666666629" width="12.666666666666664" height="12.333333333333329"/> |
| | |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="icon_choose_small_1"/> |
| | | <state key="selected" image="icon_choose_small_s"/> |
| | | <connections> |
| | | <action selector="readAction:" destination="-1" eventType="touchUpInside" id="q0M-1x-fcB"/> |
| | | </connections> |
| | | </button> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="同意" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tC0-1B-EV0"> |
| | | <rect key="frame" x="40" y="74.666666666666629" width="27" height="16"/> |
| | | <rect key="frame" x="40" y="74.666666666666629" width="26" height="16"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <color key="textColor" red="0.49803921568627452" green="0.49803921568627452" blue="0.49803921568627452" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Tne-Fn-Oic"> |
| | | <rect key="frame" x="72" y="68.666666666666629" width="94" height="28"/> |
| | | <rect key="frame" x="71" y="68.666666666666629" width="91" height="28"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="《会员用户协议》"> |
| | | <color key="titleColor" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <connections> |
| | | <action selector="agreementAction:" destination="-1" eventType="touchUpInside" id="em7-8I-WC6"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | import StoreKit |
| | | |
| | | class WalletRechargeVC: BaseVC { |
| | | |
| | | @IBOutlet weak var btn_handle: UIButton! |
| | | @IBOutlet weak var collectionView: UICollectionView! |
| | | @IBOutlet weak var cons_collectionHei: NSLayoutConstraint! |
| | | @IBOutlet weak var btn_handle: UIButton! |
| | | @IBOutlet weak var collectionView: UICollectionView! |
| | | @IBOutlet weak var cons_collectionHei: NSLayoutConstraint! |
| | | |
| | | private var selectIndexPath = IndexPath(row: 0, section: 0) |
| | | private let cellW = (JQ_ScreenW - (24 * 2) - 3 * 27) / 4 |
| | | private let cellH:Double = 35 |
| | | private var selectIndexPath = IndexPath(row: 0, section: 0) |
| | | private let cellW = (JQ_ScreenW - (24 * 2) - 3 * 27) / 4 |
| | | private let cellH:Double = 35 |
| | | private var productList = Set<String>() |
| | | private var products = [SKProduct]() |
| | | |
| | | override func viewDidLoad() { |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "疗愈币充值" |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.contentInset = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10) |
| | | collectionView.register(WalletCCell.self, forCellWithReuseIdentifier: "_WalletCCell") |
| | | title = "疗愈币充值" |
| | | |
| | | let h = ceil(4.0 / 4.0) * cellH + floor((4.0 - 1) / 4.0) * 27.0 |
| | | cons_collectionHei.constant = h |
| | | view.layoutIfNeeded() |
| | | for v in 0...5{ |
| | | productList.insert("com.XQMuse.p.\(v)") |
| | | } |
| | | |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.contentInset = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10) |
| | | collectionView.register(WalletCCell.self, forCellWithReuseIdentifier: "_WalletCCell") |
| | | |
| | | let h = ceil(4.0 / 4.0) * cellH + floor((4.0 - 1) / 4.0) * 27.0 |
| | | cons_collectionHei.constant = h |
| | | view.layoutIfNeeded() |
| | | |
| | | InPurchaseManager.instance().setProductList(productList) { products in |
| | | self.products = Array(products) |
| | | self.products.sort { p1, p2 in |
| | | return p1.price.doubleValue < p2.price.doubleValue |
| | | } |
| | | self.collectionView.reloadData() |
| | | } |
| | | } |
| | | |
| | | |
| | | override func setUI() { |
| | | view.backgroundColor = UIColor(hexString: "f6f6f6") |
| | | btn_handle.jq_gradientNibColor(colorArr: [UIColor(hexStr: "#8EA47A").cgColor,UIColor(hexStr: "#AFCA98").cgColor], cornerRadius: 20) |
| | | } |
| | | override func setUI() { |
| | | view.backgroundColor = UIColor(hexString: "f6f6f6") |
| | | btn_handle.jq_gradientNibColor(colorArr: [UIColor(hexStr: "#8EA47A").cgColor,UIColor(hexStr: "#AFCA98").cgColor], cornerRadius: 20) |
| | | } |
| | | |
| | | @IBAction func completeAction(_ sender: UIButton) { |
| | | |
| | | guard let userId = UserViewModel.getLoginInfo()?.userid else { |
| | | sceneDelegate?.needLogin() |
| | | return} |
| | | |
| | | let product = products[selectIndexPath.row] |
| | | InPurchaseManager.purchaseProduct(ID: product.productIdentifier, applicationUsername: userId.string) { model in |
| | | |
| | | } errorClouse: { error in |
| | | alertError(msg: error.localizedDescription) |
| | | } |
| | | } |
| | | } |
| | | |
| | | extension WalletRechargeVC:UICollectionViewDelegate & UICollectionViewDataSource{ |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
| | | selectIndexPath = indexPath |
| | | collectionView.reloadData() |
| | | } |
| | | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
| | | selectIndexPath = indexPath |
| | | collectionView.reloadData() |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | | return 4 |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_WalletCCell", for: indexPath) as! WalletCCell |
| | | cell.selectAt(indexPath == selectIndexPath) |
| | | return cell |
| | | } |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | | return products.count |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_WalletCCell", for: indexPath) as! WalletCCell |
| | | cell.selectAt(indexPath == selectIndexPath) |
| | | let product = products[indexPath.row] |
| | | cell.lable_title.text = product.localizedTitle |
| | | return cell |
| | | } |
| | | } |
| | | |
| | | extension WalletRechargeVC:UICollectionViewDelegateFlowLayout{ |
| | | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { |
| | | return CGSize(width: cellW, height:cellH) |
| | | } |
| | | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { |
| | | return CGSize(width: cellW, height:cellH) |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { |
| | | return 27 |
| | | } |
| | | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { |
| | | return 27 |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { |
| | | return 27 |
| | | } |
| | | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { |
| | | return 27 |
| | | } |
| | | |
| | | } |
| | | |
| | | class WalletCCell:UICollectionViewCell{ |
| | | |
| | | private lazy var lable_title:UILabel = { |
| | | let label = UILabel() |
| | | label.text = "疗愈币0" |
| | | label.textAlignment = .center |
| | | label.textColor = UIColor(hexString: "#A9C393") |
| | | label.font = UIFont.systemFont(ofSize: 16, weight: .medium) |
| | | return label |
| | | }() |
| | | private(set) lazy var lable_title:UILabel = { |
| | | let label = UILabel() |
| | | label.text = "0币" |
| | | label.textAlignment = .center |
| | | label.textColor = UIColor(hexString: "#A9C393") |
| | | label.font = UIFont.systemFont(ofSize: 16, weight: .medium) |
| | | return label |
| | | }() |
| | | |
| | | override init(frame: CGRect) { |
| | | super.init(frame: frame) |
| | | jq_borderWidth = 1 |
| | | jq_borderColor = UIColor(hexString: "#ABC695") |
| | | jq_cornerRadius = 8 |
| | | override init(frame: CGRect) { |
| | | super.init(frame: frame) |
| | | jq_borderWidth = 1 |
| | | jq_borderColor = UIColor(hexString: "#ABC695") |
| | | jq_cornerRadius = 8 |
| | | |
| | | contentView.addSubview(lable_title) |
| | | lable_title.snp.makeConstraints { make in |
| | | make.center.equalToSuperview() |
| | | } |
| | | } |
| | | contentView.addSubview(lable_title) |
| | | lable_title.snp.makeConstraints { make in |
| | | make.center.equalToSuperview() |
| | | } |
| | | } |
| | | |
| | | func selectAt(_ state:Bool){ |
| | | backgroundColor = state ? UIColor(hexString: "#8EA47A") : .white |
| | | lable_title.textColor = state ? .white:UIColor(hexString: "#8EA47A") |
| | | jq_borderWidth = state ? 0:1 |
| | | } |
| | | func selectAt(_ state:Bool){ |
| | | backgroundColor = state ? UIColor(hexString: "#8EA47A") : .white |
| | | lable_title.textColor = state ? .white:UIColor(hexString: "#8EA47A") |
| | | jq_borderWidth = state ? 0:1 |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | |
| | | <rect key="frame" x="14" y="68" width="365" height="141"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="充值金额" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nAx-8V-3yC"> |
| | | <rect key="frame" x="10.000000000000004" y="13" width="57.333333333333343" height="17"/> |
| | | <rect key="frame" x="9.9999999999999964" y="13" width="55.666666666666657" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | </constraints> |
| | | <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="Cco-HP-q4Y"> |
| | | <size key="itemSize" width="128" height="128"/> |
| | | <size key="estimatedItemSize" width="128" height="128"/> |
| | | <size key="headerReferenceSize" width="0.0" height="0.0"/> |
| | | <size key="footerReferenceSize" width="0.0" height="0.0"/> |
| | | <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> |
| | |
| | | <real key="value" value="20"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="completeAction:" destination="-1" eventType="touchUpInside" id="J4Z-bu-S5a"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | |
| | | |
| | | var accessToken: String = "" |
| | | var appUserId: Int = 0 |
| | | var bindStatus: Int = 0 |
| | | var bindStatus: Int = 0 //是否需要验证手机号 1=是 2=否 |
| | | var cellPhone: String = "" |
| | | var expireIn: Int = 0 |
| | | var expireIn: Int = 0 // token过期时间 |
| | | var expireTime: Int = 0 |
| | | var ipaddr: String = "" |
| | | var loginTime: Int = 0 |
| | | var token: String = "" |
| | | var userid: Int = 0 |
| | | var username: String = "" |
| | | |
| | | var loginByAppleToken:String? |
| | | var appleId:String? |
| | | var wechatOpenId:String? |
| | | } |
| | | |
| | | |
| | |
| | | return NetworkRequest.request(params: params, method: .post, progress: true) |
| | | } |
| | | |
| | | |
| | | class func loginByApple(appleId:String)->Observable<BaseResponse<LoginUserInfoModel>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | params.interface(url: "/auth/app/appleLogin") |
| | | .append(key: "appleId", value: appleId) |
| | | .append(key: "apipost_id", value: "246d780670e264") |
| | | return NetworkRequest.request(params: params, method: .post, progress: true) |
| | | } |
| | | |
| | | /// Apple登录 【验证】 |
| | | class func confirmByApple(cellPhone:String,captcha:String,loginType:ThreePlantformLoginType,wxOrAppleId:String,name:String? = nil,mail:String? = nil)->Observable<BaseResponse<LoginUserInfoModel>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | params.interface(url: "/auth/app/verifyCellPhone") |
| | | .append(key: "cellPhone", value: cellPhone) |
| | | .append(key: "captcha", value: captcha) |
| | | .append(key: "loginType", value: loginType.rawValue) |
| | | .append(key: "wxOrAppleId", value: wxOrAppleId) |
| | | .append(key: "name", value: name) |
| | | .append(key: "mail", value: mail) |
| | | .append(key: "apipost_id", value: "246d7806b0e26a") |
| | | return NetworkRequest.request(params: params, method: .post,encoding: (JSONEncoding.self as! ParameterEncoding), progress: true) |
| | | } |
| | | |
| | | /// 发送验证码 |
| | | class func sendCode(type:SendCodeType)->Observable<BaseResponse<SimpleModel>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | |
| | | Services.getCustomerCode().subscribe(onNext: {[weak self] data in |
| | | self?.image_qrCode.sd_setImage(with: URL(string: data.data ?? "")) |
| | | }).disposed(by: disposeBag) |
| | | |
| | | let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressCopyAction(_:))) |
| | | longPress.minimumPressDuration = 0.8 |
| | | image_qrCode.isUserInteractionEnabled = true |
| | | image_qrCode.addGestureRecognizer(longPress) |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | let vc = TreeTeskEnergyExchangeRecordVC() |
| | | push(vc: vc) |
| | | } |
| | | |
| | | @objc private func longPressCopyAction(_ gesture:UILongPressGestureRecognizer){ |
| | | if gesture.state == .began{ |
| | | if let img = image_qrCode.image{ |
| | | image_qrCode.isUserInteractionEnabled = false |
| | | UIImageWriteToSavedPhotosAlbum(img, nil,nil, nil) |
| | | alertSuccess(msg: "保存成功") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | extension TreeTeskEnergyExchangeVC:UITableViewDataSource & UITableViewDelegate{ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="当前能量值" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Re7-sx-WRH"> |
| | | <rect key="frame" x="146.66666666666666" y="57.333333333333343" width="71.666666666666657" height="17"/> |
| | | <rect key="frame" x="147.66666666666666" y="57.333333333333343" width="69.666666666666657" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="e3s-i0-uyr"> |
| | | <rect key="frame" x="148.66666666666666" y="703.66666666666663" width="96" height="114.33333333333337"/> |
| | | <rect key="frame" x="148.66666666666666" y="683.66666666666663" width="96" height="114.33333333333337"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="客服微信二维码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="09J-LW-WxK"> |
| | | <rect key="frame" x="5" y="100" width="86" height="14.333333333333329"/> |
| | | <rect key="frame" x="6" y="100" width="83.666666666666671" height="14.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="12"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <constraint firstItem="09J-LW-WxK" firstAttribute="top" secondItem="9aI-7D-eFc" secondAttribute="bottom" constant="4" id="aS8-g9-cs9"/> |
| | | </constraints> |
| | | </view> |
| | | <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="JKR-h6-LMB"> |
| | | <rect key="frame" x="0.0" y="187.66666666666663" width="393" height="501"/> |
| | | <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="grouped" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" estimatedSectionHeaderHeight="-1" sectionFooterHeight="18" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="JKR-h6-LMB"> |
| | | <rect key="frame" x="0.0" y="187.66666666666663" width="393" height="481"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | </tableView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本次活动与Apple Inc.无关" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6So-p2-hzW"> |
| | | <rect key="frame" x="137" y="803" width="119.33333333333331" height="10"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="10"/> |
| | | <color key="textColor" systemColor="systemGray2Color"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="JKR-h6-LMB" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="0Vw-Rn-fdO"/> |
| | | <constraint firstItem="e3s-i0-uyr" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="5aL-5g-rR2"/> |
| | | <constraint firstAttribute="bottom" secondItem="09J-LW-WxK" secondAttribute="bottom" constant="54" id="G60-D0-FJb"/> |
| | | <constraint firstItem="JKR-h6-LMB" firstAttribute="top" secondItem="ovv-Cg-b9v" secondAttribute="bottom" constant="15" id="Ked-lz-ho3"/> |
| | | <constraint firstItem="6So-p2-hzW" firstAttribute="centerX" secondItem="e3s-i0-uyr" secondAttribute="centerX" id="Lps-XQ-L6Q"/> |
| | | <constraint firstItem="ovv-Cg-b9v" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="15" id="OXZ-tq-LSv"/> |
| | | <constraint firstItem="e3s-i0-uyr" firstAttribute="top" secondItem="JKR-h6-LMB" secondAttribute="bottom" constant="15" id="X15-Vw-XaT"/> |
| | | <constraint firstItem="ovv-Cg-b9v" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="dsg-VV-ljB"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="JKR-h6-LMB" secondAttribute="trailing" id="hns-pa-A9y"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="e3s-i0-uyr" secondAttribute="bottom" id="vdc-o4-bf0"/> |
| | | <constraint firstItem="6So-p2-hzW" firstAttribute="top" secondItem="e3s-i0-uyr" secondAttribute="bottom" constant="5" id="hya-Lz-vqx"/> |
| | | <constraint firstItem="09J-LW-WxK" firstAttribute="top" secondItem="9aI-7D-eFc" secondAttribute="bottom" constant="4" id="nNQ-yu-Hvy"/> |
| | | <constraint firstItem="09J-LW-WxK" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="tod-4Y-cvA"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="e3s-i0-uyr" secondAttribute="bottom" constant="20" id="vdc-o4-bf0"/> |
| | | <constraint firstAttribute="bottomMargin" secondItem="6So-p2-hzW" secondAttribute="bottom" constant="5" id="wUQ-ss-Lpt"/> |
| | | <constraint firstAttribute="trailing" secondItem="ovv-Cg-b9v" secondAttribute="trailing" constant="14" id="yfT-Nr-QvP"/> |
| | | </constraints> |
| | | <point key="canvasLocation" x="5.343511450381679" y="20.422535211267608"/> |
| | |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | | <systemColor name="systemGray2Color"> |
| | | <color red="0.68235294120000001" green="0.68235294120000001" blue="0.69803921570000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </systemColor> |
| | | </resources> |
| | | </document> |
| | |
| | | |
| | | class TreeTeskExchangeSuccessView: UIView,JQNibView{ |
| | | @IBOutlet weak var view_container: UIView! |
| | | |
| | | @IBOutlet weak var image_qrCode: UIImageView! |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | view_container.transform = .init(scaleX: 0.1, y: 0.1) |
| | | alpha = 0 |
| | | |
| | | let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressCopyAction(_:))) |
| | | longPress.minimumPressDuration = 0.8 |
| | | image_qrCode.isUserInteractionEnabled = true |
| | | image_qrCode.addGestureRecognizer(longPress) |
| | | } |
| | | |
| | | static func show(){ |
| | |
| | | } |
| | | } |
| | | |
| | | @objc private func longPressCopyAction(_ gesture:UILongPressGestureRecognizer){ |
| | | if gesture.state == .began{ |
| | | if let img = image_qrCode.image{ |
| | | image_qrCode.isUserInteractionEnabled = false |
| | | UIImageWriteToSavedPhotosAlbum(img, nil,nil, nil) |
| | | alertSuccess(msg: "保存成功") |
| | | } |
| | | } |
| | | } |
| | | |
| | | @IBAction func closeAction(_ sender: UIButton) { |
| | | UIView.animate(withDuration: 0.3) { |
| | | self.view_container.transform = .init(scaleX: 0.1, y: 0.1) |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4ru-7s-yUN"> |
| | | <rect key="frame" x="24" y="199.66666666666666" width="345" height="452.66666666666674"/> |
| | | <rect key="frame" x="24" y="191.33333333333334" width="345" height="469.33333333333326"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="兑换成功" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uwa-22-p1n"> |
| | | <rect key="frame" x="135.66666666666666" y="17" width="73.666666666666657" height="21"/> |
| | | <rect key="frame" x="136.66666666666666" y="17" width="71.666666666666657" height="21"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <rect key="frame" x="72" y="53" width="201" height="39.666666666666657"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="领取验证码:--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="psN-sL-6pq"> |
| | | <rect key="frame" x="51" y="0.0" width="99" height="39.666666666666664"/> |
| | | <rect key="frame" x="52" y="0.0" width="97" height="39.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/> |
| | | <color key="textColor" red="0.56470588235294117" green="0.65490196078431373" blue="0.48627450980392156" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <constraint firstAttribute="width" secondItem="GQk-cT-1IF" secondAttribute="height" multiplier="1:1" id="IQg-YH-wfl"/> |
| | | </constraints> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="可添加助教微信,了解课程详情" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xal-zI-HOg"> |
| | | <rect key="frame" x="72.666666666666686" y="347.66666666666674" width="200" height="17"/> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xal-zI-HOg"> |
| | | <rect key="frame" x="75.333333333333329" y="347.66666666666663" width="194.66666666666669" height="33.666666666666686"/> |
| | | <string key="text">可添加助教微信,了解课程详情 |
| | | 长按保存图片</string> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="h25-4Z-I8T"> |
| | | <rect key="frame" x="37" y="388.66666666666674" width="271" height="40"/> |
| | | <rect key="frame" x="37" y="405.33333333333326" width="271" height="40"/> |
| | | <color key="backgroundColor" red="0.56470588239999997" green="0.65490196079999996" blue="0.48627450979999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="om4-Kn-hqq"/> |
| | |
| | | <constraint firstItem="4ru-7s-yUN" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="zt7-Tt-vce"/> |
| | | </constraints> |
| | | <connections> |
| | | <outlet property="image_qrCode" destination="GQk-cT-1IF" id="U2k-zg-3wi"/> |
| | | <outlet property="view_container" destination="4ru-7s-yUN" id="C6v-VX-yVc"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="65" y="21"/> |
| | |
| | | import UIKit |
| | | import SVProgressHUD |
| | | import JQTools |
| | | import AuthenticationServices |
| | | |
| | | class SceneDelegate: UIResponder, UIWindowSceneDelegate { |
| | | |
| | |
| | | if #available(iOS 13.0, *) { |
| | | window?.overrideUserInterfaceStyle = .light |
| | | } |
| | | |
| | | if let appleId = UserViewModel.getLoginInfo()?.appleId { |
| | | //检查Apple登录,授权情况 |
| | | let provider = ASAuthorizationAppleIDProvider() |
| | | provider.getCredentialState(forUserID: appleId) { state, error in |
| | | guard error == nil else {return} |
| | | switch state { |
| | | case .revoked,.notFound,.transferred: |
| | | UserViewModel.clearToken() |
| | | UserViewModel.clearLoginInfo() |
| | | UserViewModel.clearAvatarInfo() |
| | | default:break |
| | | } |
| | | } |
| | | |
| | | NotificationCenter.default.rx.notification(ASAuthorizationAppleIDProvider.credentialRevokedNotification).subscribe(onNext: { _ in |
| | | UserViewModel.clearToken() |
| | | UserViewModel.clearLoginInfo() |
| | | UserViewModel.clearAvatarInfo() |
| | | }).disposed(by: JQ_disposeBag) |
| | | } |
| | | } |
| | | |
| | | func needLogin(){ |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| | | <plist version="1.0"> |
| | | <dict> |
| | | <key>com.apple.developer.applesignin</key> |
| | | <array> |
| | | <string>Default</string> |
| | | </array> |
| | | </dict> |
| | | </plist> |