Commit f67fec79b98c3783c8c514373e20b98a857af44a

Authored by weixin_45529955
2 parents 3c100276 27ec752f

合并5.6.4隐藏订单n天之内不受影响

Showing 69 changed files with 4638 additions and 29 deletions

Too many changes to show.

To preserve performance only 69 of 69+ files are displayed.

1 -  
2 import 'dart:convert'; 1 import 'dart:convert';
3 import 'dart:ui'; 2 import 'dart:ui';
4 3
@@ -66,7 +65,7 @@ class _StoreCustomerHomeRightPageState @@ -66,7 +65,7 @@ class _StoreCustomerHomeRightPageState
66 if (widget.customerProvider!.storeSunmodel == null) { 65 if (widget.customerProvider!.storeSunmodel == null) {
67 _getSellerGuestManage(); 66 _getSellerGuestManage();
68 } else { 67 } else {
69 - widget.customerProvider!.storeSunmodel!.sellerUser!.forEach((element) { 68 + widget.customerProvider!.storeSunmodel!.sellerUser?.forEach((element) {
70 MessageMenuModel messageMenuModel = MessageMenuModel(); 69 MessageMenuModel messageMenuModel = MessageMenuModel();
71 messageMenuModel.uid = element!.uid; 70 messageMenuModel.uid = element!.uid;
72 messageMenuModel.title = element.nickName ?? element.account; 71 messageMenuModel.title = element.nickName ?? element.account;
@@ -77,12 +76,16 @@ class _StoreCustomerHomeRightPageState @@ -77,12 +76,16 @@ class _StoreCustomerHomeRightPageState
77 }); 76 });
78 if (menuTitle.length > 0) { 77 if (menuTitle.length > 0) {
79 menuTitle[0].select = true; 78 menuTitle[0].select = true;
80 - }  
81 - // _couponNetworkData();  
82 - _getGuestManageData(isShowLoading: true); 79 + // _couponNetworkData();
  80 + _getGuestManageData(isShowLoading: true);
83 81
84 - // _getMarketingByUid();  
85 - _getSellerCountsList(); 82 + // _getMarketingByUid();
  83 + _getSellerCountsList();
  84 + } else {
  85 + //页面数据为空
  86 + widget.customerProvider!.pageStateMyHome = PageState.Empty;
  87 + setState(() {});
  88 + }
86 } 89 }
87 }); 90 });
88 bus.on("refresh_my_customer_home", (arg) { 91 bus.on("refresh_my_customer_home", (arg) {
@@ -113,12 +116,16 @@ class _StoreCustomerHomeRightPageState @@ -113,12 +116,16 @@ class _StoreCustomerHomeRightPageState
113 }); 116 });
114 if (menuTitle.length > 0) { 117 if (menuTitle.length > 0) {
115 menuTitle[0].select = true; 118 menuTitle[0].select = true;
116 - }  
117 - // _couponNetworkData();  
118 - _getGuestManageData(isShowLoading: true); 119 + // _couponNetworkData();
  120 + _getGuestManageData(isShowLoading: true);
119 121
120 - // _getMarketingByUid();  
121 - _getSellerCountsList(); 122 + // _getMarketingByUid();
  123 + _getSellerCountsList();
  124 + } else {
  125 + //没数据
  126 + widget.customerProvider!.pageStateMyHome = PageState.Empty;
  127 + setState(() {});
  128 + }
122 } 129 }
123 130
124 _getSellerCountsList({isShowLoading = false, VoidCallback? callback}) async { 131 _getSellerCountsList({isShowLoading = false, VoidCallback? callback}) async {
@@ -602,7 +609,7 @@ class _StoreCustomerHomeRightPageState @@ -602,7 +609,7 @@ class _StoreCustomerHomeRightPageState
602 // _getMarketingByUid(); 609 // _getMarketingByUid();
603 _getSellerCountsList(); 610 _getSellerCountsList();
604 }, 611 },
605 - emptyMsg: "暂时没有我的客情哦", 612 + emptyMsg: "暂时没有分经理的客情哦",
606 emptyImg: "empty_search", 613 emptyImg: "empty_search",
607 showMsg: "加载中,请稍候...", 614 showMsg: "加载中,请稍候...",
608 )); 615 ));
@@ -996,7 +1003,8 @@ class _StoreCustomerHomeRightPageState @@ -996,7 +1003,8 @@ class _StoreCustomerHomeRightPageState
996 padding: EdgeInsets.symmetric(horizontal: w(10)), 1003 padding: EdgeInsets.symmetric(horizontal: w(10)),
997 itemBuilder: (context, index) { 1004 itemBuilder: (context, index) {
998 SellerCountsListSunModel countsListSunModel = widget 1005 SellerCountsListSunModel countsListSunModel = widget
999 - .customerProvider!.managerStatisticsList![index]; 1006 + .customerProvider!
  1007 + .managerStatisticsList![index];
1000 return InkWell( 1008 return InkWell(
1001 onTap: () { 1009 onTap: () {
1002 String? uid = ''; 1010 String? uid = '';
@@ -146,15 +146,40 @@ class NoteBookModel extends ChangeNotifier { @@ -146,15 +146,40 @@ class NoteBookModel extends ChangeNotifier {
146 146
147 List<String> config = str.split('-'); 147 List<String> config = str.split('-');
148 148
149 - if (now.weekday == 1 ||  
150 - now.weekday == 2 ||  
151 - now.weekday == 3 ||  
152 - now.weekday == 4) {  
153 - //周一到周四 149 + //n存在,并且传入的日期在今天之前的n天之外
154 150
155 - limitNum = int.parse(config[0]); 151 + if (config.length == 3) {
  152 + DateTime date = DateTime(now.year, now.month, now.day);
  153 + DateTime dateToday = DateTime(DateTime.now().year,
  154 + DateTime.now().month, DateTime.now().day);
  155 +
  156 + Duration difference = dateToday.difference(date);
  157 + print('天数差异: ${difference.inDays}'); // 输出天数差异
  158 + if (difference.inDays <= int.parse(config[2])) {
  159 + limitNum = -1;
  160 + } else {
  161 + if (now.weekday == 1 ||
  162 + now.weekday == 2 ||
  163 + now.weekday == 3 ||
  164 + now.weekday == 4) {
  165 + //周一到周四
  166 +
  167 + limitNum = int.parse(config[0]);
  168 + } else {
  169 + limitNum = int.parse(config[1]);
  170 + }
  171 + }
156 } else { 172 } else {
157 - limitNum = int.parse(config[1]); 173 + if (now.weekday == 1 ||
  174 + now.weekday == 2 ||
  175 + now.weekday == 3 ||
  176 + now.weekday == 4) {
  177 + //周一到周四
  178 +
  179 + limitNum = int.parse(config[0]);
  180 + } else {
  181 + limitNum = int.parse(config[1]);
  182 + }
158 } 183 }
159 } 184 }
160 } 185 }
@@ -230,15 +230,40 @@ class TableManagerModelOrReserve with ChangeNotifier { @@ -230,15 +230,40 @@ class TableManagerModelOrReserve with ChangeNotifier {
230 230
231 List<String> config = str.split('-'); 231 List<String> config = str.split('-');
232 232
233 - if (datetime.weekday == 1 ||  
234 - datetime.weekday == 2 ||  
235 - datetime.weekday == 3 ||  
236 - datetime.weekday == 4) {  
237 - //周一到周四  
238 -  
239 - limitNum = int.parse(config[0]); 233 + //n存在,并且传入的日期在今天之前的n天之外
  234 +
  235 + if (config.length == 3) {
  236 + DateTime date = DateTime(datetime.year, datetime.month, datetime.day);
  237 + DateTime dateToday = DateTime(DateTime.now().year,
  238 + DateTime.now().month, DateTime.now().day);
  239 +
  240 + Duration difference = dateToday.difference(date);
  241 + print('天数差异: ${difference.inDays}'); // 输出天数差异
  242 + if (difference.inDays <= int.parse(config[2])) {
  243 + limitNum = -1;
  244 + } else {
  245 + if (datetime.weekday == 1 ||
  246 + datetime.weekday == 2 ||
  247 + datetime.weekday == 3 ||
  248 + datetime.weekday == 4) {
  249 + //周一到周四
  250 +
  251 + limitNum = int.parse(config[0]);
  252 + } else {
  253 + limitNum = int.parse(config[1]);
  254 + }
  255 + }
240 } else { 256 } else {
241 - limitNum = int.parse(config[1]); 257 + if (datetime.weekday == 1 ||
  258 + datetime.weekday == 2 ||
  259 + datetime.weekday == 3 ||
  260 + datetime.weekday == 4) {
  261 + //周一到周四
  262 +
  263 + limitNum = int.parse(config[0]);
  264 + } else {
  265 + limitNum = int.parse(config[1]);
  266 + }
242 } 267 }
243 } 268 }
244 } 269 }
@@ -1815,6 +1815,45 @@ static void launchAppGallery() async{ @@ -1815,6 +1815,45 @@ static void launchAppGallery() async{
1815 } 1815 }
1816 1816
1817 //获取唯一标识 1817 //获取唯一标识
  1818 + // static Future<String> getUUID() async {
  1819 + // DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
  1820 + // if (Platform.isAndroid) {
  1821 + // AndroidDeviceInfo androidDeviceInfo = await deviceInfoPlugin.androidInfo;
  1822 + // return androidDeviceInfo.androidId;
  1823 + // } else if (Platform.isIOS) {
  1824 + // IosDeviceInfo iosDeviceInfo = await deviceInfoPlugin.iosInfo;
  1825 + // return iosDeviceInfo.identifierForVendor;
  1826 + // } else if (Platform.isOhos) {
  1827 + // String udid;
  1828 + // try {
  1829 + // udid = await FlutterUdid.udid;
  1830 + // } on PlatformException {
  1831 + // udid = 'Failed to get UDID.';
  1832 + // }
  1833 +
  1834 + // return udid;
  1835 + // }
  1836 + // return '';
  1837 + // }
  1838 +
  1839 + //获取唯一标识
  1840 +// //获取唯一标识
  1841 + // static Future<String?> getUUID() async {
  1842 + // DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
  1843 + // if (Platform.isAndroid) {
  1844 + // AndroidDeviceInfo androidDeviceInfo = await deviceInfoPlugin.androidInfo;
  1845 + // return androidDeviceInfo.serialNumber;
  1846 + // } else if (Platform.isIOS) {
  1847 + // IosDeviceInfo iosDeviceInfo = await deviceInfoPlugin.iosInfo;
  1848 + // return iosDeviceInfo.identifierForVendor;
  1849 + // } else {
  1850 +
  1851 + // OhosDeviceInfo ohosDeviceInfo = await deviceInfoPlugin.ohosInfo;
  1852 + // return ohosDeviceInfo.udid;
  1853 + // }
  1854 + // }
  1855 +
  1856 + //获取唯一标识
1818 static Future<String> getUUID() async { 1857 static Future<String> getUUID() async {
1819 DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin(); 1858 DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
1820 if (Platform.isAndroid) { 1859 if (Platform.isAndroid) {
  1 +Subproject commit a5349371525462b1d1b6cfa4cf4d2a59503f1435
  1 +package io.flutter.plugins;
  2 +
  3 +import androidx.annotation.Keep;
  4 +import androidx.annotation.NonNull;
  5 +import io.flutter.Log;
  6 +
  7 +import io.flutter.embedding.engine.FlutterEngine;
  8 +
  9 +/**
  10 + * Generated file. Do not edit.
  11 + * This file is generated by the Flutter tool based on the
  12 + * plugins that support the Android platform.
  13 + */
  14 +@Keep
  15 +public final class GeneratedPluginRegistrant {
  16 + private static final String TAG = "GeneratedPluginRegistrant";
  17 + public static void registerWith(@NonNull FlutterEngine flutterEngine) {
  18 + try {
  19 + flutterEngine.getPlugins().add(new com.tencent.tpns.plugin.XgFlutterPlugin());
  20 + } catch (Exception e) {
  21 + Log.e(TAG, "Error registering plugin tpns_flutter_plugin, com.tencent.tpns.plugin.XgFlutterPlugin", e);
  22 + }
  23 + }
  24 +}
  1 +sdk.dir=/Users/wangdongni/Library/Android/sdk
  2 +flutter.sdk=/Users/wangdongni/fvm/versions/custom_3.27.4-ohos-dev
  1 +{"inputs":["/Users/wangdongni/Desktop/Flutter-ReserveApp/library/TPNS-Flutter-Plugin-a5349371525462b1d1b6cfa4cf4d2a59503f1435/example/.dart_tool/package_config_subset"],"outputs":[]}
  1 +{"appPreferencesBuildSettings":{},"buildConfigurations":[{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++14","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","GCC_C_LANGUAGE_STANDARD":"gnu11","GCC_DYNAMIC_NO_PIC":"NO","GCC_NO_COMMON_BLOCKS":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PREPROCESSOR_DEFINITIONS":"POD_CONFIGURATION_DEBUG=1 DEBUG=1 $(inherited)","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"12.0","MTL_ENABLE_DEBUG_INFO":"INCLUDE_SOURCE","MTL_FAST_MATH":"YES","ONLY_ACTIVE_ARCH":"YES","PRODUCT_NAME":"$(TARGET_NAME)","STRIP_INSTALLED_PRODUCT":"NO","SWIFT_ACTIVE_COMPILATION_CONDITIONS":"DEBUG","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_VERSION":"5.0","SYMROOT":"${SRCROOT}/../build"},"guid":"bfdfe7dc352907fc980b868725387e98814b7e2c3bac55ee99d78eaa8d1ec61e","name":"Debug"},{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++14","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf-with-dsym","ENABLE_NS_ASSERTIONS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","GCC_C_LANGUAGE_STANDARD":"gnu11","GCC_NO_COMMON_BLOCKS":"YES","GCC_PREPROCESSOR_DEFINITIONS":"POD_CONFIGURATION_PROFILE=1 $(inherited)","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"12.0","MTL_ENABLE_DEBUG_INFO":"NO","MTL_FAST_MATH":"YES","PRODUCT_NAME":"$(TARGET_NAME)","STRIP_INSTALLED_PRODUCT":"NO","SWIFT_COMPILATION_MODE":"wholemodule","SWIFT_OPTIMIZATION_LEVEL":"-O","SWIFT_VERSION":"5.0","SYMROOT":"${SRCROOT}/../build"},"guid":"bfdfe7dc352907fc980b868725387e98c22f26ca3341c3062f2313dc737070d4","name":"Profile"},{"buildSettings":{"ALWAYS_SEARCH_USER_PATHS":"NO","CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED":"YES","CLANG_ANALYZER_NONNULL":"YES","CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION":"YES_AGGRESSIVE","CLANG_CXX_LANGUAGE_STANDARD":"gnu++14","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_ENABLE_OBJC_WEAK":"YES","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_DOCUMENTATION_COMMENTS":"YES","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"YES","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNGUARDED_AVAILABILITY":"YES_AGGRESSIVE","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","COPY_PHASE_STRIP":"NO","DEBUG_INFORMATION_FORMAT":"dwarf-with-dsym","ENABLE_NS_ASSERTIONS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","GCC_C_LANGUAGE_STANDARD":"gnu11","GCC_NO_COMMON_BLOCKS":"YES","GCC_PREPROCESSOR_DEFINITIONS":"POD_CONFIGURATION_RELEASE=1 $(inherited)","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","IPHONEOS_DEPLOYMENT_TARGET":"12.0","MTL_ENABLE_DEBUG_INFO":"NO","MTL_FAST_MATH":"YES","PRODUCT_NAME":"$(TARGET_NAME)","STRIP_INSTALLED_PRODUCT":"NO","SWIFT_COMPILATION_MODE":"wholemodule","SWIFT_OPTIMIZATION_LEVEL":"-O","SWIFT_VERSION":"5.0","SYMROOT":"${SRCROOT}/../build"},"guid":"bfdfe7dc352907fc980b868725387e9828903703a9fe9e3707306e58aab67b51","name":"Release"}],"classPrefix":"","defaultConfigurationName":"Release","developmentRegion":"en","groupTree":{"children":[{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e98d0b25d39b515a574839e998df229c3cb","path":"../Podfile","sourceTree":"SOURCE_ROOT","type":"file"},{"children":[{"children":[{"children":[{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e9896fda080e2571fb7ba7d2ce0ee337bed","path":"Flutter.podspec","sourceTree":"<group>","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e9861ceea3701c0d56bef436121bd5f6ce6","name":"Pod","path":"","sourceTree":"<group>","type":"group"},{"children":[{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e98bdb745932e5ae4288de5f0eb08d0c755","path":"Flutter.debug.xcconfig","sourceTree":"<group>","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e982e24b78fbfdb11315753e70a9108d9b0","path":"Flutter.release.xcconfig","sourceTree":"<group>","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e9872176d5253051de5133da2c3fed997a9","name":"Support Files","path":"../Pods/Target Support Files/Flutter","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e980a0a107201d1103f0928ce3dfb8660df","name":"Flutter","path":"../Flutter","sourceTree":"<group>","type":"group"},{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"children":[{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98d5db08823dccdd42fe057528c8a0524d","path":"../../../../../../../ios/Classes/XgFlutterPlugin.h","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e98972a7dda1132963d4a2e61d609906e01","path":"../../../../../../../ios/Classes/XgFlutterPlugin.m","sourceTree":"<group>","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98821a2abdf3de06db28fb4c4fa4fdaf99","name":"Classes","path":"Classes","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98649e42747a7d4a22b8ddefec2978b4cf","name":"ios","path":"ios","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9825f6f4cd47f567ec5529b6f98aab91ba","name":"tpns_flutter_plugin","path":"tpns_flutter_plugin","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98aad0025eac6a1b68029bb80df5f66199","name":"plugins","path":"plugins","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9808948b86a55e2cce165f54ad0e7ceab3","name":".symlinks","path":".symlinks","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98e234408a67f1ea78d5d5131f06c5cd5e","name":"ios","path":"ios","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98bd8cab63292b0c6b6a6670cbecd8400f","name":"example","path":"example","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e988994ebefb3bf8a9a9337eb9f069bd3e2","name":"..","path":"..","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98ee838493a526108f7aca6f3e62ea1980","name":"..","path":"../../../../../../ios","sourceTree":"<group>","type":"group"},{"children":[{"fileType":"text","guid":"bfdfe7dc352907fc980b868725387e98b5b3e73d20278576387fa427ed41d1fe","path":"../../../../../../LICENSE","sourceTree":"<group>","type":"file"},{"fileType":"text.script.ruby","guid":"bfdfe7dc352907fc980b868725387e98d37df5d3abe2fad1af00a1b9e1efa3ea","path":"../../../../../../ios/tpns_flutter_plugin.podspec","sourceTree":"<group>","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e988a8658ad0add029b464af8e90ffaafe8","name":"Pod","path":"","sourceTree":"<group>","type":"group"},{"children":[{"fileType":"sourcecode.module-map","guid":"bfdfe7dc352907fc980b868725387e98d969c79225726d27299cef5a34517f00","path":"tpns_flutter_plugin.modulemap","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e989b5c4f6574c134cd009d4f78e13f8b98","path":"tpns_flutter_plugin-dummy.m","sourceTree":"<group>","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e9867a2479ebfee4ba0db7d85d99d46afab","path":"tpns_flutter_plugin-Info.plist","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e9899510d7d0c2f5423a778867cc0a4c8e6","path":"tpns_flutter_plugin-prefix.pch","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98e964a67230a4b92da8ae0f53dacf1636","path":"tpns_flutter_plugin-umbrella.h","sourceTree":"<group>","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e987aaa6ab15200b939d6db9ecd7af0d323","path":"tpns_flutter_plugin.debug.xcconfig","sourceTree":"<group>","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e980a87e301e073b025a58f351ba3726fe9","path":"tpns_flutter_plugin.release.xcconfig","sourceTree":"<group>","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e989872bf21e89e5c10fb3937ca34948041","name":"Support Files","path":"../../../../Pods/Target Support Files/tpns_flutter_plugin","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98696a37ffd22858921afae8a958bc70c2","name":"tpns_flutter_plugin","path":"../.symlinks/plugins/tpns_flutter_plugin/ios","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98cad05c186a11b21d1ffbae73a15952d0","name":"Development Pods","path":"","sourceTree":"<group>","type":"group"},{"children":[{"children":[{"fileType":"wrapper.framework","guid":"bfdfe7dc352907fc980b868725387e9867aa7825f197b5c58a57320b4ccdc64e","path":"Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework","sourceTree":"DEVELOPER_DIR","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98942867ef9a9b82a20a4a7fc87d922201","name":"iOS","path":"","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e9862d9c32904d63fdaba0f2aec66ff1562","name":"Frameworks","path":"","sourceTree":"<group>","type":"group"},{"children":[{"children":[{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e981fa426bd56cb09e1fe36bd427c0d2e96","path":"XGVIPPush/XGLocalNotification.h","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98c4545e72ccfd4e89713319d391380205","path":"XGVIPPush/XGPush.h","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e9861632e3c38432c3934bc02b675e63317","path":"XGVIPPush/XGPushPrivate.h","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e9891e4d87d96de0d00611e8f31d42b223f","path":"XGVIPPush/XGVoIPService.h","sourceTree":"<group>","type":"file"},{"children":[{"fileType":"archive.ar","guid":"bfdfe7dc352907fc980b868725387e98bcd73a2d46408b235a3c96cbde8274e1","path":"XGVIPPush/libXG-SDK-Cloud.a","sourceTree":"<group>","type":"file"},{"fileType":"wrapper.framework","guid":"bfdfe7dc352907fc980b868725387e98fca830a1cf5be9a18414ceef8f5b82c2","path":"XGVIPPush/InAppMessage/XGInAppMessage.framework","sourceTree":"<group>","type":"file"},{"fileType":"wrapper.framework","guid":"bfdfe7dc352907fc980b868725387e986bbe1922eb2a275dd8b1d3cb2cbc4b92","path":"XGVIPPush/XGMTACloud.framework","sourceTree":"<group>","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e981e28dc94f430aaa52d8d3abc46383b32","name":"Frameworks","path":"","sourceTree":"<group>","type":"group"},{"children":[{"fileType":"text.xml","guid":"bfdfe7dc352907fc980b868725387e980d66de8d8b42641c4be80d11e5c8eea9","path":"XGVIPPush/PrivacyInfo.xcprivacy","sourceTree":"<group>","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e983dedd524fc67f02afd18f70ca025f5d7","name":"Resources","path":"","sourceTree":"<group>","type":"group"},{"children":[{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e98b4bee0ee05c57118d35ff349c4ab7dec","path":"ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist","sourceTree":"<group>","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e9802a1e168515fa7a2abc2fb674a073d91","path":"TPNS-iOS.debug.xcconfig","sourceTree":"<group>","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e98f22c036dab579e74ec1f3926f5f1ad03","path":"TPNS-iOS.release.xcconfig","sourceTree":"<group>","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e98ccb9bf53f214b36b0264d46ec10d7876","name":"Support Files","path":"../Target Support Files/TPNS-iOS","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e981c4d70330c0d1ae0c0791982b17f53ae","name":"TPNS-iOS","path":"TPNS-iOS","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98f9af9aff49a2447a4bb50eb68e8aaaa2","name":"Pods","path":"","sourceTree":"<group>","type":"group"},{"guid":"bfdfe7dc352907fc980b868725387e987e4b02bc702869663ebd67d7bb17eb02","name":"Products","path":"","sourceTree":"<group>","type":"group"},{"children":[{"children":[{"fileType":"sourcecode.module-map","guid":"bfdfe7dc352907fc980b868725387e98910ff8878e77d76715cb080b4f911b32","path":"Pods-Runner.modulemap","sourceTree":"<group>","type":"file"},{"fileType":"text","guid":"bfdfe7dc352907fc980b868725387e9883038990d4569310f86a3d179f3dc4be","path":"Pods-Runner-acknowledgements.markdown","sourceTree":"<group>","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e98c00c41278f658e6ceb16df5521b68d8f","path":"Pods-Runner-acknowledgements.plist","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.c.objc","guid":"bfdfe7dc352907fc980b868725387e9864c46b4db6103b2ad8c9ee4bf4f6e7fd","path":"Pods-Runner-dummy.m","sourceTree":"<group>","type":"file"},{"fileType":"text.plist.xml","guid":"bfdfe7dc352907fc980b868725387e986e090dff771d1e24fa2d27e047d8e9ac","path":"Pods-Runner-Info.plist","sourceTree":"<group>","type":"file"},{"fileType":"text.script.sh","guid":"bfdfe7dc352907fc980b868725387e9848ffd6ac5261907fb3297c3be0aea3fa","path":"Pods-Runner-resources.sh","sourceTree":"<group>","type":"file"},{"fileType":"sourcecode.c.h","guid":"bfdfe7dc352907fc980b868725387e98016c1c2cad6b51b01e04354e34529260","path":"Pods-Runner-umbrella.h","sourceTree":"<group>","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e985b481060fd2f1513a1cec6f0a5803a8e","path":"Pods-Runner.debug.xcconfig","sourceTree":"<group>","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e9856bac3515a22bb0747fd79cf7dc38df0","path":"Pods-Runner.profile.xcconfig","sourceTree":"<group>","type":"file"},{"fileType":"text.xcconfig","guid":"bfdfe7dc352907fc980b868725387e98f6590950f3857aaca97d3b1223595179","path":"Pods-Runner.release.xcconfig","sourceTree":"<group>","type":"file"}],"guid":"bfdfe7dc352907fc980b868725387e9817fcba5a9cf7c16fee837584731cb581","name":"Pods-Runner","path":"Target Support Files/Pods-Runner","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98d38343279834dca6061bda437330c834","name":"Targets Support Files","path":"","sourceTree":"<group>","type":"group"}],"guid":"bfdfe7dc352907fc980b868725387e98677e601b37074db53aff90e47c8f96d1","name":"Pods","path":"","sourceTree":"<group>","type":"group"},"guid":"bfdfe7dc352907fc980b868725387e98","path":"/Users/wangdongni/Desktop/Flutter-ReserveApp/library/TPNS-Flutter-Plugin-a5349371525462b1d1b6cfa4cf4d2a59503f1435/example/ios/Pods/Pods.xcodeproj","projectDirectory":"/Users/wangdongni/Desktop/Flutter-ReserveApp/library/TPNS-Flutter-Plugin-a5349371525462b1d1b6cfa4cf4d2a59503f1435/example/ios/Pods","targets":["TARGET@v11_hash=744c7869b0b733a414919ee016ca4010","TARGET@v11_hash=cb6b9132287f25b2d4a1340a73127cdd","TARGET@v11_hash=0c9a99eb41c95cdaf229f42892d78b8b","TARGET@v11_hash=1eafe1ba098662e2e251d03b153fdb09","TARGET@v11_hash=89ebb027a6faaae45492ff06ab3cdf41"]}
  1 +{"buildConfigurations":[{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e9802a1e168515fa7a2abc2fb674a073d91","buildSettings":{"ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME":"AccentColor","ENABLE_USER_SCRIPT_SANDBOXING":"NO","IPHONEOS_DEPLOYMENT_TARGET":"9.0","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks","ONLY_ACTIVE_ARCH":"NO","SDKROOT":"iphoneos","TARGETED_DEVICE_FAMILY":"1,2"},"guid":"bfdfe7dc352907fc980b868725387e985d3b1942613d423d7dfff7a7b2985637","name":"Debug"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e98f22c036dab579e74ec1f3926f5f1ad03","buildSettings":{"ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME":"AccentColor","ENABLE_USER_SCRIPT_SANDBOXING":"NO","IPHONEOS_DEPLOYMENT_TARGET":"9.0","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks","SDKROOT":"iphoneos","TARGETED_DEVICE_FAMILY":"1,2","VALIDATE_PRODUCT":"YES"},"guid":"bfdfe7dc352907fc980b868725387e98449968c303b13dc48de197feacf10ab9","name":"Profile"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e98f22c036dab579e74ec1f3926f5f1ad03","buildSettings":{"ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME":"AccentColor","ENABLE_USER_SCRIPT_SANDBOXING":"NO","IPHONEOS_DEPLOYMENT_TARGET":"9.0","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks","SDKROOT":"iphoneos","TARGETED_DEVICE_FAMILY":"1,2","VALIDATE_PRODUCT":"YES"},"guid":"bfdfe7dc352907fc980b868725387e987afd2f48638198eaa2fffca86252de32","name":"Release"}],"buildPhases":[],"buildRules":[],"dependencies":[{"guid":"bfdfe7dc352907fc980b868725387e982460493a1a8d4411519af4460e81dd84","name":"TPNS-iOS-TPNS-iOS-Privacy"}],"guid":"bfdfe7dc352907fc980b868725387e98c42e8ff0e3bda603eb698dfa85341258","name":"TPNS-iOS","provisioningSourceData":[{"bundleIdentifierFromInfoPlist":"","configurationName":"Debug","provisioningStyle":0},{"bundleIdentifierFromInfoPlist":"","configurationName":"Profile","provisioningStyle":0},{"bundleIdentifierFromInfoPlist":"","configurationName":"Release","provisioningStyle":0}],"type":"aggregate"}
  1 +{"buildConfigurations":[{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e9802a1e168515fa7a2abc2fb674a073d91","buildSettings":{"CODE_SIGNING_ALLOWED":"NO","CODE_SIGNING_IDENTITY":"-","CODE_SIGNING_REQUIRED":"NO","CONFIGURATION_BUILD_DIR":"$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/TPNS-iOS","EXPANDED_CODE_SIGN_IDENTITY":"-","IBSC_MODULE":"TPNS_iOS","INFOPLIST_FILE":"Target Support Files/TPNS-iOS/ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist","IPHONEOS_DEPLOYMENT_TARGET":"9.0","ONLY_ACTIVE_ARCH":"NO","PRODUCT_NAME":"TPNS-iOS-Privacy","SDKROOT":"iphoneos","SKIP_INSTALL":"YES","TARGETED_DEVICE_FAMILY":"1,2","WRAPPER_EXTENSION":"bundle"},"guid":"bfdfe7dc352907fc980b868725387e981f0150c1212cdffc5e15213066a2c564","name":"Debug"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e98f22c036dab579e74ec1f3926f5f1ad03","buildSettings":{"CLANG_ENABLE_OBJC_WEAK":"NO","CODE_SIGNING_ALLOWED":"NO","CODE_SIGNING_IDENTITY":"-","CODE_SIGNING_REQUIRED":"NO","CONFIGURATION_BUILD_DIR":"$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/TPNS-iOS","EXPANDED_CODE_SIGN_IDENTITY":"-","IBSC_MODULE":"TPNS_iOS","INFOPLIST_FILE":"Target Support Files/TPNS-iOS/ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist","IPHONEOS_DEPLOYMENT_TARGET":"9.0","PRODUCT_NAME":"TPNS-iOS-Privacy","SDKROOT":"iphoneos","SKIP_INSTALL":"YES","TARGETED_DEVICE_FAMILY":"1,2","VALIDATE_PRODUCT":"YES","WRAPPER_EXTENSION":"bundle"},"guid":"bfdfe7dc352907fc980b868725387e98830a135fc1a5ac923cd480a6bf99c402","name":"Profile"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e98f22c036dab579e74ec1f3926f5f1ad03","buildSettings":{"CODE_SIGNING_ALLOWED":"NO","CODE_SIGNING_IDENTITY":"-","CODE_SIGNING_REQUIRED":"NO","CONFIGURATION_BUILD_DIR":"$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/TPNS-iOS","EXPANDED_CODE_SIGN_IDENTITY":"-","IBSC_MODULE":"TPNS_iOS","INFOPLIST_FILE":"Target Support Files/TPNS-iOS/ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist","IPHONEOS_DEPLOYMENT_TARGET":"9.0","PRODUCT_NAME":"TPNS-iOS-Privacy","SDKROOT":"iphoneos","SKIP_INSTALL":"YES","TARGETED_DEVICE_FAMILY":"1,2","WRAPPER_EXTENSION":"bundle"},"guid":"bfdfe7dc352907fc980b868725387e9840823166c5caff952ffdd616f62c9494","name":"Release"}],"buildPhases":[{"buildFiles":[],"guid":"bfdfe7dc352907fc980b868725387e98fbe63ad67819cb86b693a1ff92b17721","type":"com.apple.buildphase.sources"},{"buildFiles":[],"guid":"bfdfe7dc352907fc980b868725387e9870abe11690d1d474d3e82408a7f8ecbe","type":"com.apple.buildphase.frameworks"},{"buildFiles":[{"fileReference":"bfdfe7dc352907fc980b868725387e980d66de8d8b42641c4be80d11e5c8eea9","guid":"bfdfe7dc352907fc980b868725387e9849ce88c25d49a4aa6ba8057d761fb3ea"}],"guid":"bfdfe7dc352907fc980b868725387e982b478e95afd5c49065aa8c0ecf813d6f","type":"com.apple.buildphase.resources"}],"buildRules":[],"dependencies":[],"guid":"bfdfe7dc352907fc980b868725387e982460493a1a8d4411519af4460e81dd84","name":"TPNS-iOS-TPNS-iOS-Privacy","productReference":{"guid":"bfdfe7dc352907fc980b868725387e98278609cc9be2e424351d2e0854f9e200","name":"TPNS-iOS-Privacy.bundle","type":"product"},"productTypeIdentifier":"com.apple.product-type.bundle","provisioningSourceData":[{"bundleIdentifierFromInfoPlist":"${PRODUCT_BUNDLE_IDENTIFIER}","configurationName":"Debug","provisioningStyle":0},{"bundleIdentifierFromInfoPlist":"${PRODUCT_BUNDLE_IDENTIFIER}","configurationName":"Profile","provisioningStyle":0},{"bundleIdentifierFromInfoPlist":"${PRODUCT_BUNDLE_IDENTIFIER}","configurationName":"Release","provisioningStyle":0}],"type":"standard"}
  1 +{"buildConfigurations":[{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e98bdb745932e5ae4288de5f0eb08d0c755","buildSettings":{"ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME":"AccentColor","CLANG_ENABLE_OBJC_WEAK":"NO","ENABLE_USER_SCRIPT_SANDBOXING":"NO","IPHONEOS_DEPLOYMENT_TARGET":"12.0","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks","ONLY_ACTIVE_ARCH":"NO","SDKROOT":"iphoneos","TARGETED_DEVICE_FAMILY":"1,2"},"guid":"bfdfe7dc352907fc980b868725387e982cf0da236cf10d087750aa1434da9227","name":"Debug"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e982e24b78fbfdb11315753e70a9108d9b0","buildSettings":{"ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME":"AccentColor","CLANG_ENABLE_OBJC_WEAK":"NO","ENABLE_USER_SCRIPT_SANDBOXING":"NO","IPHONEOS_DEPLOYMENT_TARGET":"12.0","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks","SDKROOT":"iphoneos","TARGETED_DEVICE_FAMILY":"1,2","VALIDATE_PRODUCT":"YES"},"guid":"bfdfe7dc352907fc980b868725387e98cc28f154213fd8181aa70d4c188a8335","name":"Profile"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e982e24b78fbfdb11315753e70a9108d9b0","buildSettings":{"ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME":"AccentColor","CLANG_ENABLE_OBJC_WEAK":"NO","ENABLE_USER_SCRIPT_SANDBOXING":"NO","IPHONEOS_DEPLOYMENT_TARGET":"12.0","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks","SDKROOT":"iphoneos","TARGETED_DEVICE_FAMILY":"1,2","VALIDATE_PRODUCT":"YES"},"guid":"bfdfe7dc352907fc980b868725387e981f19fefc6e52ad9e4e005a2248234387","name":"Release"}],"buildPhases":[],"buildRules":[],"dependencies":[],"guid":"bfdfe7dc352907fc980b868725387e989da425bb6d6d5d8dbb95e4afffb82217","name":"Flutter","provisioningSourceData":[{"bundleIdentifierFromInfoPlist":"","configurationName":"Debug","provisioningStyle":0},{"bundleIdentifierFromInfoPlist":"","configurationName":"Profile","provisioningStyle":0},{"bundleIdentifierFromInfoPlist":"","configurationName":"Release","provisioningStyle":0}],"type":"aggregate"}
  1 +{"buildConfigurations":[{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e987aaa6ab15200b939d6db9ecd7af0d323","buildSettings":{"CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CODE_SIGN_IDENTITY[sdk=appletvos*]":"","CODE_SIGN_IDENTITY[sdk=iphoneos*]":"","CODE_SIGN_IDENTITY[sdk=watchos*]":"","CURRENT_PROJECT_VERSION":"1","DEFINES_MODULE":"YES","DYLIB_COMPATIBILITY_VERSION":"1","DYLIB_CURRENT_VERSION":"1","DYLIB_INSTALL_NAME_BASE":"@rpath","ENABLE_BITCODE":"NO","ENABLE_MODULE_VERIFIER":"NO","ENABLE_USER_SCRIPT_SANDBOXING":"NO","EXCLUDED_ARCHS[sdk=iphoneos*]":"$(inherited) armv7","EXCLUDED_ARCHS[sdk=iphonesimulator*]":"$(inherited) i386","FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64\" $(inherited)","FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64_x86_64-simulator\" $(inherited)","GCC_PREFIX_HEADER":"Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-prefix.pch","GENERATE_INFOPLIST_FILE":"NO","INFOPLIST_FILE":"Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-Info.plist","INSTALL_PATH":"$(LOCAL_LIBRARY_DIR)/Frameworks","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks @loader_path/Frameworks","MACH_O_TYPE":"staticlib","MODULEMAP_FILE":"Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin.modulemap","ONLY_ACTIVE_ARCH":"NO","OTHER_LDFLAGS":"$(inherited) -framework Flutter","PRODUCT_MODULE_NAME":"tpns_flutter_plugin","PRODUCT_NAME":"tpns_flutter_plugin","SDKROOT":"iphoneos","SKIP_INSTALL":"YES","SWIFT_ACTIVE_COMPILATION_CONDITIONS":"$(inherited) ","SWIFT_INSTALL_OBJC_HEADER":"YES","SWIFT_VERSION":"5.0","TARGETED_DEVICE_FAMILY":"1,2","VALID_ARCHS[sdk=iphonesimulator*]":"$(ARCHS_STANDARD)","VERSIONING_SYSTEM":"apple-generic","VERSION_INFO_PREFIX":""},"guid":"bfdfe7dc352907fc980b868725387e98ebe0cbf2688bfcc5e319f08458cdd4e8","name":"Debug"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e980a87e301e073b025a58f351ba3726fe9","buildSettings":{"CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CODE_SIGN_IDENTITY[sdk=appletvos*]":"","CODE_SIGN_IDENTITY[sdk=iphoneos*]":"","CODE_SIGN_IDENTITY[sdk=watchos*]":"","CURRENT_PROJECT_VERSION":"1","DEFINES_MODULE":"YES","DYLIB_COMPATIBILITY_VERSION":"1","DYLIB_CURRENT_VERSION":"1","DYLIB_INSTALL_NAME_BASE":"@rpath","ENABLE_BITCODE":"NO","ENABLE_MODULE_VERIFIER":"NO","ENABLE_USER_SCRIPT_SANDBOXING":"NO","EXCLUDED_ARCHS[sdk=iphoneos*]":"$(inherited) armv7","EXCLUDED_ARCHS[sdk=iphonesimulator*]":"$(inherited) i386","FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\" $(inherited)","FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\" $(inherited)","GCC_PREFIX_HEADER":"Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-prefix.pch","GENERATE_INFOPLIST_FILE":"NO","INFOPLIST_FILE":"Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-Info.plist","INSTALL_PATH":"$(LOCAL_LIBRARY_DIR)/Frameworks","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks @loader_path/Frameworks","MACH_O_TYPE":"staticlib","MODULEMAP_FILE":"Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin.modulemap","OTHER_LDFLAGS":"$(inherited) -framework Flutter","PRODUCT_MODULE_NAME":"tpns_flutter_plugin","PRODUCT_NAME":"tpns_flutter_plugin","SDKROOT":"iphoneos","SKIP_INSTALL":"YES","SWIFT_ACTIVE_COMPILATION_CONDITIONS":"$(inherited) ","SWIFT_INSTALL_OBJC_HEADER":"YES","SWIFT_VERSION":"5.0","TARGETED_DEVICE_FAMILY":"1,2","VALIDATE_PRODUCT":"YES","VALID_ARCHS[sdk=iphonesimulator*]":"$(ARCHS_STANDARD)","VERSIONING_SYSTEM":"apple-generic","VERSION_INFO_PREFIX":""},"guid":"bfdfe7dc352907fc980b868725387e98599193f496e415c89ee8ff8ebf708148","name":"Profile"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e980a87e301e073b025a58f351ba3726fe9","buildSettings":{"CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CODE_SIGN_IDENTITY[sdk=appletvos*]":"","CODE_SIGN_IDENTITY[sdk=iphoneos*]":"","CODE_SIGN_IDENTITY[sdk=watchos*]":"","CURRENT_PROJECT_VERSION":"1","DEFINES_MODULE":"YES","DYLIB_COMPATIBILITY_VERSION":"1","DYLIB_CURRENT_VERSION":"1","DYLIB_INSTALL_NAME_BASE":"@rpath","ENABLE_BITCODE":"NO","ENABLE_MODULE_VERIFIER":"NO","ENABLE_USER_SCRIPT_SANDBOXING":"NO","EXCLUDED_ARCHS[sdk=iphoneos*]":"$(inherited) armv7","EXCLUDED_ARCHS[sdk=iphonesimulator*]":"$(inherited) i386","FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\" $(inherited)","FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\" $(inherited)","GCC_PREFIX_HEADER":"Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-prefix.pch","GENERATE_INFOPLIST_FILE":"NO","INFOPLIST_FILE":"Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-Info.plist","INSTALL_PATH":"$(LOCAL_LIBRARY_DIR)/Frameworks","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks @loader_path/Frameworks","MACH_O_TYPE":"staticlib","MODULEMAP_FILE":"Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin.modulemap","OTHER_LDFLAGS":"$(inherited) -framework Flutter","PRODUCT_MODULE_NAME":"tpns_flutter_plugin","PRODUCT_NAME":"tpns_flutter_plugin","SDKROOT":"iphoneos","SKIP_INSTALL":"YES","SWIFT_ACTIVE_COMPILATION_CONDITIONS":"$(inherited) ","SWIFT_INSTALL_OBJC_HEADER":"YES","SWIFT_VERSION":"5.0","TARGETED_DEVICE_FAMILY":"1,2","VALIDATE_PRODUCT":"YES","VALID_ARCHS[sdk=iphonesimulator*]":"$(ARCHS_STANDARD)","VERSIONING_SYSTEM":"apple-generic","VERSION_INFO_PREFIX":""},"guid":"bfdfe7dc352907fc980b868725387e98d3a04af7bc4b1a07985b942e4cbcdc9b","name":"Release"}],"buildPhases":[{"buildFiles":[{"fileReference":"bfdfe7dc352907fc980b868725387e98e964a67230a4b92da8ae0f53dacf1636","guid":"bfdfe7dc352907fc980b868725387e98bb7c39f4914c88d1f573ae817d05b918","headerVisibility":"public"},{"fileReference":"bfdfe7dc352907fc980b868725387e98d5db08823dccdd42fe057528c8a0524d","guid":"bfdfe7dc352907fc980b868725387e98864587ec5fabd270ac5355144ed7b02b","headerVisibility":"public"}],"guid":"bfdfe7dc352907fc980b868725387e98a96d7d7c07db8f24c979256e8f36ed59","type":"com.apple.buildphase.headers"},{"buildFiles":[{"fileReference":"bfdfe7dc352907fc980b868725387e989b5c4f6574c134cd009d4f78e13f8b98","guid":"bfdfe7dc352907fc980b868725387e98c79800e99f233cf71e29002a586f8e23"},{"fileReference":"bfdfe7dc352907fc980b868725387e98972a7dda1132963d4a2e61d609906e01","guid":"bfdfe7dc352907fc980b868725387e986cad3f0ce87143700f5eb6325fa98536"}],"guid":"bfdfe7dc352907fc980b868725387e98aa3bf9247e7aff10c04f6e50695de4a5","type":"com.apple.buildphase.sources"},{"buildFiles":[{"fileReference":"bfdfe7dc352907fc980b868725387e9867aa7825f197b5c58a57320b4ccdc64e","guid":"bfdfe7dc352907fc980b868725387e987128eda312a5c268e7a2beef251bb227"}],"guid":"bfdfe7dc352907fc980b868725387e982ad398d956d69c65c3e9baadbd392308","type":"com.apple.buildphase.frameworks"},{"buildFiles":[],"guid":"bfdfe7dc352907fc980b868725387e980cf92fb8be40aab442168baab164189b","type":"com.apple.buildphase.resources"}],"buildRules":[],"dependencies":[{"guid":"bfdfe7dc352907fc980b868725387e989da425bb6d6d5d8dbb95e4afffb82217","name":"Flutter"},{"guid":"bfdfe7dc352907fc980b868725387e98c42e8ff0e3bda603eb698dfa85341258","name":"TPNS-iOS"}],"guid":"bfdfe7dc352907fc980b868725387e98b8cb5c431befa1ffc809f43934c87544","name":"tpns_flutter_plugin","predominantSourceCodeLanguage":"Xcode.SourceCodeLanguage.Objective-C","productReference":{"guid":"bfdfe7dc352907fc980b868725387e982b185b493242329466b047b885b68060","name":"tpns_flutter_plugin.framework","type":"product"},"productTypeIdentifier":"com.apple.product-type.framework","provisioningSourceData":[{"bundleIdentifierFromInfoPlist":"${PRODUCT_BUNDLE_IDENTIFIER}","configurationName":"Debug","provisioningStyle":1},{"bundleIdentifierFromInfoPlist":"${PRODUCT_BUNDLE_IDENTIFIER}","configurationName":"Profile","provisioningStyle":1},{"bundleIdentifierFromInfoPlist":"${PRODUCT_BUNDLE_IDENTIFIER}","configurationName":"Release","provisioningStyle":1}],"type":"standard"}
  1 +{"buildConfigurations":[{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e985b481060fd2f1513a1cec6f0a5803a8e","buildSettings":{"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","CLANG_ENABLE_OBJC_WEAK":"NO","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CODE_SIGN_IDENTITY[sdk=appletvos*]":"","CODE_SIGN_IDENTITY[sdk=iphoneos*]":"","CODE_SIGN_IDENTITY[sdk=watchos*]":"","CURRENT_PROJECT_VERSION":"1","DEFINES_MODULE":"YES","DYLIB_COMPATIBILITY_VERSION":"1","DYLIB_CURRENT_VERSION":"1","DYLIB_INSTALL_NAME_BASE":"@rpath","ENABLE_BITCODE":"NO","ENABLE_MODULE_VERIFIER":"NO","ENABLE_USER_SCRIPT_SANDBOXING":"NO","EXCLUDED_ARCHS[sdk=iphoneos*]":"$(inherited) armv7","EXCLUDED_ARCHS[sdk=iphonesimulator*]":"$(inherited) i386","FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64\" $(inherited)","FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64_x86_64-simulator\" $(inherited)","INFOPLIST_FILE":"Target Support Files/Pods-Runner/Pods-Runner-Info.plist","INSTALL_PATH":"$(LOCAL_LIBRARY_DIR)/Frameworks","IPHONEOS_DEPLOYMENT_TARGET":"12.0","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks @loader_path/Frameworks","MACH_O_TYPE":"staticlib","MODULEMAP_FILE":"Target Support Files/Pods-Runner/Pods-Runner.modulemap","ONLY_ACTIVE_ARCH":"NO","OTHER_LDFLAGS":"$(inherited) -framework Flutter","OTHER_LIBTOOLFLAGS":"","PODS_ROOT":"$(SRCROOT)","PRODUCT_BUNDLE_IDENTIFIER":"org.cocoapods.${PRODUCT_NAME:rfc1034identifier}","PRODUCT_NAME":"$(TARGET_NAME:c99extidentifier)","SDKROOT":"iphoneos","SKIP_INSTALL":"YES","TARGETED_DEVICE_FAMILY":"1,2","VALID_ARCHS[sdk=iphonesimulator*]":"$(ARCHS_STANDARD)","VERSIONING_SYSTEM":"apple-generic","VERSION_INFO_PREFIX":""},"guid":"bfdfe7dc352907fc980b868725387e986cfdc1191a5c614e1bdc42539a91e39c","name":"Debug"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e9856bac3515a22bb0747fd79cf7dc38df0","buildSettings":{"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","CLANG_ENABLE_OBJC_WEAK":"NO","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CODE_SIGN_IDENTITY[sdk=appletvos*]":"","CODE_SIGN_IDENTITY[sdk=iphoneos*]":"","CODE_SIGN_IDENTITY[sdk=watchos*]":"","CURRENT_PROJECT_VERSION":"1","DEFINES_MODULE":"YES","DYLIB_COMPATIBILITY_VERSION":"1","DYLIB_CURRENT_VERSION":"1","DYLIB_INSTALL_NAME_BASE":"@rpath","ENABLE_BITCODE":"NO","ENABLE_MODULE_VERIFIER":"NO","ENABLE_USER_SCRIPT_SANDBOXING":"NO","EXCLUDED_ARCHS[sdk=iphoneos*]":"$(inherited) armv7","EXCLUDED_ARCHS[sdk=iphonesimulator*]":"$(inherited) i386","FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\" $(inherited)","FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\" $(inherited)","INFOPLIST_FILE":"Target Support Files/Pods-Runner/Pods-Runner-Info.plist","INSTALL_PATH":"$(LOCAL_LIBRARY_DIR)/Frameworks","IPHONEOS_DEPLOYMENT_TARGET":"12.0","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks @loader_path/Frameworks","MACH_O_TYPE":"staticlib","MODULEMAP_FILE":"Target Support Files/Pods-Runner/Pods-Runner.modulemap","OTHER_LDFLAGS":"$(inherited) -framework Flutter","OTHER_LIBTOOLFLAGS":"","PODS_ROOT":"$(SRCROOT)","PRODUCT_BUNDLE_IDENTIFIER":"org.cocoapods.${PRODUCT_NAME:rfc1034identifier}","PRODUCT_NAME":"$(TARGET_NAME:c99extidentifier)","SDKROOT":"iphoneos","SKIP_INSTALL":"YES","TARGETED_DEVICE_FAMILY":"1,2","VALIDATE_PRODUCT":"YES","VALID_ARCHS[sdk=iphonesimulator*]":"$(ARCHS_STANDARD)","VERSIONING_SYSTEM":"apple-generic","VERSION_INFO_PREFIX":""},"guid":"bfdfe7dc352907fc980b868725387e9885a87ad4da50f1de5d577785ac0e3ebc","name":"Profile"},{"baseConfigurationFileReference":"bfdfe7dc352907fc980b868725387e98f6590950f3857aaca97d3b1223595179","buildSettings":{"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","CLANG_ENABLE_OBJC_WEAK":"NO","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CODE_SIGN_IDENTITY[sdk=appletvos*]":"","CODE_SIGN_IDENTITY[sdk=iphoneos*]":"","CODE_SIGN_IDENTITY[sdk=watchos*]":"","CURRENT_PROJECT_VERSION":"1","DEFINES_MODULE":"YES","DYLIB_COMPATIBILITY_VERSION":"1","DYLIB_CURRENT_VERSION":"1","DYLIB_INSTALL_NAME_BASE":"@rpath","ENABLE_BITCODE":"NO","ENABLE_MODULE_VERIFIER":"NO","ENABLE_USER_SCRIPT_SANDBOXING":"NO","EXCLUDED_ARCHS[sdk=iphoneos*]":"$(inherited) armv7","EXCLUDED_ARCHS[sdk=iphonesimulator*]":"$(inherited) i386","FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\" $(inherited)","FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]":"\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\" $(inherited)","INFOPLIST_FILE":"Target Support Files/Pods-Runner/Pods-Runner-Info.plist","INSTALL_PATH":"$(LOCAL_LIBRARY_DIR)/Frameworks","IPHONEOS_DEPLOYMENT_TARGET":"12.0","LD_RUNPATH_SEARCH_PATHS":"$(inherited) @executable_path/Frameworks @loader_path/Frameworks","MACH_O_TYPE":"staticlib","MODULEMAP_FILE":"Target Support Files/Pods-Runner/Pods-Runner.modulemap","OTHER_LDFLAGS":"$(inherited) -framework Flutter","OTHER_LIBTOOLFLAGS":"","PODS_ROOT":"$(SRCROOT)","PRODUCT_BUNDLE_IDENTIFIER":"org.cocoapods.${PRODUCT_NAME:rfc1034identifier}","PRODUCT_NAME":"$(TARGET_NAME:c99extidentifier)","SDKROOT":"iphoneos","SKIP_INSTALL":"YES","TARGETED_DEVICE_FAMILY":"1,2","VALIDATE_PRODUCT":"YES","VALID_ARCHS[sdk=iphonesimulator*]":"$(ARCHS_STANDARD)","VERSIONING_SYSTEM":"apple-generic","VERSION_INFO_PREFIX":""},"guid":"bfdfe7dc352907fc980b868725387e9854e119313ef1e4405f400a518a6538d4","name":"Release"}],"buildPhases":[{"buildFiles":[{"fileReference":"bfdfe7dc352907fc980b868725387e98016c1c2cad6b51b01e04354e34529260","guid":"bfdfe7dc352907fc980b868725387e982d7dbbcd958c8fbf1056bf4bba3fe191","headerVisibility":"public"}],"guid":"bfdfe7dc352907fc980b868725387e9834cb8f33d5400410a3595b3dd2026337","type":"com.apple.buildphase.headers"},{"buildFiles":[{"fileReference":"bfdfe7dc352907fc980b868725387e9864c46b4db6103b2ad8c9ee4bf4f6e7fd","guid":"bfdfe7dc352907fc980b868725387e9832c6bc24b565edfd0dc0ca8ac1225042"}],"guid":"bfdfe7dc352907fc980b868725387e98d7272ea146ac3705a162856acbae40da","type":"com.apple.buildphase.sources"},{"buildFiles":[{"fileReference":"bfdfe7dc352907fc980b868725387e9867aa7825f197b5c58a57320b4ccdc64e","guid":"bfdfe7dc352907fc980b868725387e9817bc3a152443f07733c5d16d7b55eaab"}],"guid":"bfdfe7dc352907fc980b868725387e983f5da8ef80eb0055da7ee69ca1951d23","type":"com.apple.buildphase.frameworks"},{"buildFiles":[],"guid":"bfdfe7dc352907fc980b868725387e988c8373082e1182faa133de921adbd3f5","type":"com.apple.buildphase.resources"}],"buildRules":[],"dependencies":[{"guid":"bfdfe7dc352907fc980b868725387e989da425bb6d6d5d8dbb95e4afffb82217","name":"Flutter"},{"guid":"bfdfe7dc352907fc980b868725387e98c42e8ff0e3bda603eb698dfa85341258","name":"TPNS-iOS"},{"guid":"bfdfe7dc352907fc980b868725387e98b8cb5c431befa1ffc809f43934c87544","name":"tpns_flutter_plugin"}],"guid":"bfdfe7dc352907fc980b868725387e98312b4bc59bbbe2c06c205bf4da6737f5","name":"Pods-Runner","predominantSourceCodeLanguage":"Xcode.SourceCodeLanguage.Objective-C","productReference":{"guid":"bfdfe7dc352907fc980b868725387e98699846e06e93b50cafdb00290784c775","name":"Pods_Runner.framework","type":"product"},"productTypeIdentifier":"com.apple.product-type.framework","provisioningSourceData":[{"bundleIdentifierFromInfoPlist":"${PRODUCT_BUNDLE_IDENTIFIER}","configurationName":"Debug","provisioningStyle":1},{"bundleIdentifierFromInfoPlist":"${PRODUCT_BUNDLE_IDENTIFIER}","configurationName":"Profile","provisioningStyle":1},{"bundleIdentifierFromInfoPlist":"${PRODUCT_BUNDLE_IDENTIFIER}","configurationName":"Release","provisioningStyle":1}],"type":"standard"}
  1 +{"guid":"dc4b70c03e8043e50e38f2068887b1d4","name":"Pods","path":"/Users/wangdongni/Desktop/Flutter-ReserveApp/library/TPNS-Flutter-Plugin-a5349371525462b1d1b6cfa4cf4d2a59503f1435/example/ios/Pods/Pods.xcodeproj/project.xcworkspace","projects":["PROJECT@v11_mod=bee1ca1b631e6a1f8c457308069016ec_hash=bfdfe7dc352907fc980b868725387e98plugins=1OJSG6M1FOV3XYQCBH7Z29RZ0FPR9XDE1"]}
  1 +{"files":{"/Users/wangdongni/Desktop/Flutter-ReserveApp/library/TPNS-Flutter-Plugin-a5349371525462b1d1b6cfa4cf4d2a59503f1435/example/ios/Runner.xcodeproj/project.pbxproj":"ec84ee201d05127f9f40973e16d41abf","/Users/wangdongni/Desktop/Flutter-ReserveApp/library/TPNS-Flutter-Plugin-a5349371525462b1d1b6cfa4cf4d2a59503f1435/example/ios/Podfile":"1ca61287e6ec0d52e7f46def3db50794","/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/packages/flutter_tools/bin/podhelper.rb":"1c24564c3525b43ca5c5cc2d098ef803"}}
  1 +/Users/wangdongni/Desktop/Flutter-ReserveApp/library/TPNS-Flutter-Plugin-a5349371525462b1d1b6cfa4cf4d2a59503f1435/
  1 +#
  2 +# This podspec is NOT to be published. It is only used as a local source!
  3 +# This is a generated file; do not edit or check into version control.
  4 +#
  5 +
  6 +Pod::Spec.new do |s|
  7 + s.name = 'Flutter'
  8 + s.version = '1.0.0'
  9 + s.summary = 'A UI toolkit for beautiful and fast apps.'
  10 + s.homepage = 'https://flutter.dev'
  11 + s.license = { :type => 'BSD' }
  12 + s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
  13 + s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s }
  14 + s.ios.deployment_target = '12.0'
  15 + # Framework linking is handled by Flutter tooling, not CocoaPods.
  16 + # Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs.
  17 + s.vendored_frameworks = 'path/to/nothing'
  18 +end
  1 +// This is a generated file; do not edit or check into version control.
  2 +FLUTTER_ROOT=/Users/wangdongni/fvm/versions/custom_oh_3.27.4-dev
  3 +FLUTTER_APPLICATION_PATH=/Users/wangdongni/Desktop/Flutter-ReserveApp/library/TPNS-Flutter-Plugin-a5349371525462b1d1b6cfa4cf4d2a59503f1435/example
  4 +COCOAPODS_PARALLEL_CODE_SIGN=true
  5 +FLUTTER_TARGET=lib/main.dart
  6 +FLUTTER_BUILD_DIR=build
  7 +FLUTTER_BUILD_NAME=1.0.0
  8 +FLUTTER_BUILD_NUMBER=1
  9 +EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
  10 +EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
  11 +DART_OBFUSCATION=false
  12 +TRACK_WIDGET_CREATION=true
  13 +TREE_SHAKE_ICONS=false
  14 +PACKAGE_CONFIG=.dart_tool/package_config.json
  1 +#!/bin/sh
  2 +# This is a generated file; do not edit or check into version control.
  3 +export "FLUTTER_ROOT=/Users/wangdongni/fvm/versions/custom_oh_3.27.4-dev"
  4 +export "FLUTTER_APPLICATION_PATH=/Users/wangdongni/Desktop/Flutter-ReserveApp/library/TPNS-Flutter-Plugin-a5349371525462b1d1b6cfa4cf4d2a59503f1435/example"
  5 +export "COCOAPODS_PARALLEL_CODE_SIGN=true"
  6 +export "FLUTTER_TARGET=lib/main.dart"
  7 +export "FLUTTER_BUILD_DIR=build"
  8 +export "FLUTTER_BUILD_NAME=1.0.0"
  9 +export "FLUTTER_BUILD_NUMBER=1"
  10 +export "DART_OBFUSCATION=false"
  11 +export "TRACK_WIDGET_CREATION=true"
  12 +export "TREE_SHAKE_ICONS=false"
  13 +export "PACKAGE_CONFIG=.dart_tool/package_config.json"
  1 +{
  2 + "name": "Flutter",
  3 + "version": "1.0.0",
  4 + "summary": "A UI toolkit for beautiful and fast apps.",
  5 + "homepage": "https://flutter.dev",
  6 + "license": {
  7 + "type": "BSD"
  8 + },
  9 + "authors": {
  10 + "Flutter Dev Team": "flutter-dev@googlegroups.com"
  11 + },
  12 + "source": {
  13 + "git": "https://github.com/flutter/engine",
  14 + "tag": "1.0.0"
  15 + },
  16 + "platforms": {
  17 + "ios": "12.0"
  18 + },
  19 + "vendored_frameworks": "path/to/nothing"
  20 +}
  1 +{
  2 + "name": "tpns_flutter_plugin",
  3 + "version": "1.3.4",
  4 + "summary": "TPNS",
  5 + "description": "A new flutter plugin project.",
  6 + "homepage": "https://cloud.tencent.com/product/tpns/",
  7 + "license": {
  8 + "file": "../LICENSE"
  9 + },
  10 + "authors": {
  11 + "Tencent": "rockzuo@tencent.com"
  12 + },
  13 + "source": {
  14 + "git": "https://github.com/TencentCloud/TPNS-Flutter-Plugin",
  15 + "branch": "V1.3.4"
  16 + },
  17 + "source_files": "Classes/**/*",
  18 + "dependencies": {
  19 + "Flutter": [],
  20 + "TPNS-iOS": [
  21 + "1.4.0.5"
  22 + ]
  23 + },
  24 + "platforms": {
  25 + "ios": "9.0"
  26 + },
  27 + "static_framework": true
  28 +}
  1 +PODS:
  2 + - Flutter (1.0.0)
  3 + - TPNS-iOS (1.4.0.5)
  4 + - tpns_flutter_plugin (1.3.4):
  5 + - Flutter
  6 + - TPNS-iOS (= 1.4.0.5)
  7 +
  8 +DEPENDENCIES:
  9 + - Flutter (from `Flutter`)
  10 + - tpns_flutter_plugin (from `.symlinks/plugins/tpns_flutter_plugin/ios`)
  11 +
  12 +SPEC REPOS:
  13 + trunk:
  14 + - TPNS-iOS
  15 +
  16 +EXTERNAL SOURCES:
  17 + Flutter:
  18 + :path: Flutter
  19 + tpns_flutter_plugin:
  20 + :path: ".symlinks/plugins/tpns_flutter_plugin/ios"
  21 +
  22 +SPEC CHECKSUMS:
  23 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
  24 + TPNS-iOS: 757b0439d967beb8c5d6be6a8e9ad23e11d1e36c
  25 + tpns_flutter_plugin: 54270cae525b4a255f9140b9b7f745724601646a
  26 +
  27 +PODFILE CHECKSUM: c4c93c5f6502fe2754f48404d3594bf779584011
  28 +
  29 +COCOAPODS: 1.16.2
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 54;
  7 + objects = {
  8 +
  9 +/* Begin PBXAggregateTarget section */
  10 + 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */ = {
  11 + isa = PBXAggregateTarget;
  12 + buildConfigurationList = 94078A06C17E946ADC1F2C06726219E5 /* Build configuration list for PBXAggregateTarget "Flutter" */;
  13 + buildPhases = (
  14 + );
  15 + dependencies = (
  16 + );
  17 + name = Flutter;
  18 + };
  19 + E819DAFD9B8C0DA4E037009DE8EF9900 /* TPNS-iOS */ = {
  20 + isa = PBXAggregateTarget;
  21 + buildConfigurationList = 99998805C635D0392567EC9BE18D6853 /* Build configuration list for PBXAggregateTarget "TPNS-iOS" */;
  22 + buildPhases = (
  23 + );
  24 + dependencies = (
  25 + 0C8089F606AD1230A783BE243F0A79ED /* PBXTargetDependency */,
  26 + );
  27 + name = "TPNS-iOS";
  28 + };
  29 +/* End PBXAggregateTarget section */
  30 +
  31 +/* Begin PBXBuildFile section */
  32 + 0660EEF95D228A052386FBE272345035 /* Pods-Runner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DF785CCAF72D753F11EF2F739FD0167 /* Pods-Runner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
  33 + 2F2C95BEDF98DC366AE8B683B2A2EE81 /* tpns_flutter_plugin-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 81DB49BA69AF7134557F8FAE8DF335A0 /* tpns_flutter_plugin-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
  34 + 5A6BC2764686A0069C23D26E5B68D42F /* Pods-Runner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D647505D22C08B8E9F7A45B8E608CD15 /* Pods-Runner-dummy.m */; };
  35 + 628339D03FABC5C8242236431BA715EB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 384DDA2CB25005BD6479B5987C619DD4 /* Foundation.framework */; };
  36 + 7700E941F2EB3354BB7392B962A3031B /* tpns_flutter_plugin-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F3D55FDA27C2182067AA4631B74C619A /* tpns_flutter_plugin-dummy.m */; };
  37 + A38A54224985A4F6A597A7124A4E4A05 /* XgFlutterPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C6C5E82F4331A58B9DB7397DEE54B2 /* XgFlutterPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
  38 + A57EF5DD49EEB5B6D29611EB1BEA7F23 /* XgFlutterPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = BFC6428F6299B62A0476363D0E6598F5 /* XgFlutterPlugin.m */; };
  39 + B9B6CDEC6256725F1AD7020E3B1AAB41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 384DDA2CB25005BD6479B5987C619DD4 /* Foundation.framework */; };
  40 + F11B6D852D2AA9A2195314DDB7B76565 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 552A52CD728EA0BC3A42E0C170E8BFDA /* PrivacyInfo.xcprivacy */; };
  41 +/* End PBXBuildFile section */
  42 +
  43 +/* Begin PBXContainerItemProxy section */
  44 + 58F8C27B685F22BB995CFA102E22BF41 /* PBXContainerItemProxy */ = {
  45 + isa = PBXContainerItemProxy;
  46 + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  47 + proxyType = 1;
  48 + remoteGlobalIDString = 3F4F25993703000226A9174AF7BB3A43;
  49 + remoteInfo = tpns_flutter_plugin;
  50 + };
  51 + 67AFF64117BCEA038907AB66D8CD3011 /* PBXContainerItemProxy */ = {
  52 + isa = PBXContainerItemProxy;
  53 + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  54 + proxyType = 1;
  55 + remoteGlobalIDString = E819DAFD9B8C0DA4E037009DE8EF9900;
  56 + remoteInfo = "TPNS-iOS";
  57 + };
  58 + 6E14FF8616A83427376639EEDE4777D9 /* PBXContainerItemProxy */ = {
  59 + isa = PBXContainerItemProxy;
  60 + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  61 + proxyType = 1;
  62 + remoteGlobalIDString = 1EFDDC32A34D56D411E640A81DCD9E73;
  63 + remoteInfo = Flutter;
  64 + };
  65 + 96C02A4446559DED1276283CE88DF41E /* PBXContainerItemProxy */ = {
  66 + isa = PBXContainerItemProxy;
  67 + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  68 + proxyType = 1;
  69 + remoteGlobalIDString = 1EFDDC32A34D56D411E640A81DCD9E73;
  70 + remoteInfo = Flutter;
  71 + };
  72 + B3A0C77E150C5BFEC9F5D32F45D74DC1 /* PBXContainerItemProxy */ = {
  73 + isa = PBXContainerItemProxy;
  74 + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  75 + proxyType = 1;
  76 + remoteGlobalIDString = 429EB5B6EB47BE9F4213CA909A199201;
  77 + remoteInfo = "TPNS-iOS-TPNS-iOS-Privacy";
  78 + };
  79 + DCDFE883A56B832EA0D951604B6838FB /* PBXContainerItemProxy */ = {
  80 + isa = PBXContainerItemProxy;
  81 + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  82 + proxyType = 1;
  83 + remoteGlobalIDString = E819DAFD9B8C0DA4E037009DE8EF9900;
  84 + remoteInfo = "TPNS-iOS";
  85 + };
  86 +/* End PBXContainerItemProxy section */
  87 +
  88 +/* Begin PBXFileReference section */
  89 + 078E527AF5F360F32D4242E8DE602489 /* Pods-Runner-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Runner-Info.plist"; sourceTree = "<group>"; };
  90 + 08A4EFC3611ED5FD0888BF98EA5FBFF7 /* tpns_flutter_plugin.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = tpns_flutter_plugin.podspec; path = ../../../../../../ios/tpns_flutter_plugin.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
  91 + 0B925843688D2B9B508D202957FAB81B /* XGPushPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = XGPushPrivate.h; path = XGVIPPush/XGPushPrivate.h; sourceTree = "<group>"; };
  92 + 0CB4BE22914F355C255E51F30DA50CB1 /* Pods-Runner-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Runner-acknowledgements.markdown"; sourceTree = "<group>"; };
  93 + 0DF785CCAF72D753F11EF2F739FD0167 /* Pods-Runner-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Runner-umbrella.h"; sourceTree = "<group>"; };
  94 + 1246F3BC7472A5A0F612B765EBC1AE53 /* Flutter.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Flutter.release.xcconfig; sourceTree = "<group>"; };
  95 + 139ADC8F1F2B4A48D4DA58E48F16EB8F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
  96 + 13EBAC8CE490574C92D1F0B88BD8CD84 /* XGLocalNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = XGLocalNotification.h; path = XGVIPPush/XGLocalNotification.h; sourceTree = "<group>"; };
  97 + 263CBCB3D286604C9236ABEAE563FE4F /* Flutter.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Flutter.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
  98 + 2CCA6DAF1C489730E8258F5797C8DBCB /* tpns_flutter_plugin-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "tpns_flutter_plugin-prefix.pch"; sourceTree = "<group>"; };
  99 + 33C6C5E82F4331A58B9DB7397DEE54B2 /* XgFlutterPlugin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = XgFlutterPlugin.h; path = ../../../../../../../ios/Classes/XgFlutterPlugin.h; sourceTree = "<group>"; };
  100 + 384DDA2CB25005BD6479B5987C619DD4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
  101 + 40564192047E554630A46AD57E0B87FD /* ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist"; sourceTree = "<group>"; };
  102 + 5046B34AB342C8843DA08C68D48E737B /* TPNS-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "TPNS-iOS.debug.xcconfig"; sourceTree = "<group>"; };
  103 + 50BE728FF2BA0EB1D96A97EBEE18F49B /* Pods-Runner.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Runner.modulemap"; sourceTree = "<group>"; };
  104 + 552A52CD728EA0BC3A42E0C170E8BFDA /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = XGVIPPush/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
  105 + 560E985EE8E41A989444E6E21E8E0840 /* tpns_flutter_plugin.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = tpns_flutter_plugin.release.xcconfig; sourceTree = "<group>"; };
  106 + 6300CA05A1AE52A3B5E577FC47EA3EE2 /* XGInAppMessage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XGInAppMessage.framework; path = XGVIPPush/InAppMessage/XGInAppMessage.framework; sourceTree = "<group>"; };
  107 + 6310ADF4AFF33C70E1EAE8C85E4981A9 /* XGVoIPService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = XGVoIPService.h; path = XGVIPPush/XGVoIPService.h; sourceTree = "<group>"; };
  108 + 6696DA048BA8D0F7EF9587343AA80E22 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
  109 + 669E8F25E1897672BDB80B7EB784DA24 /* Pods-Runner */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Runner"; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  110 + 6F49B4428DD6C5310911D3B27A845681 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
  111 + 7637851C2493673EC7CF4E26FC451A28 /* TPNS-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "TPNS-iOS.release.xcconfig"; sourceTree = "<group>"; };
  112 + 81DB49BA69AF7134557F8FAE8DF335A0 /* tpns_flutter_plugin-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "tpns_flutter_plugin-umbrella.h"; sourceTree = "<group>"; };
  113 + 85CE51AD2AEA97EDAB7C2E20D3C890DC /* libXG-SDK-Cloud.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = "libXG-SDK-Cloud.a"; path = "XGVIPPush/libXG-SDK-Cloud.a"; sourceTree = "<group>"; };
  114 + 8AD81E7A2AD6FD241E912FB477B34910 /* tpns_flutter_plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = tpns_flutter_plugin; path = tpns_flutter_plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  115 + 91D1A30968B0A8A851B78418FEC1FBE3 /* XGPush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = XGPush.h; path = XGVIPPush/XGPush.h; sourceTree = "<group>"; };
  116 + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
  117 + 9EB1587B06C67E684BAD1645588CEFEF /* Flutter.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Flutter.debug.xcconfig; sourceTree = "<group>"; };
  118 + BEA31E200AAE2F57835084397F6F4B79 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = ../../../../../../LICENSE; sourceTree = "<group>"; };
  119 + BFC6428F6299B62A0476363D0E6598F5 /* XgFlutterPlugin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = XgFlutterPlugin.m; path = ../../../../../../../ios/Classes/XgFlutterPlugin.m; sourceTree = "<group>"; };
  120 + D063F805FC3F93E650D8CC9EE2535010 /* XGMTACloud.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XGMTACloud.framework; path = XGVIPPush/XGMTACloud.framework; sourceTree = "<group>"; };
  121 + D647505D22C08B8E9F7A45B8E608CD15 /* Pods-Runner-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Runner-dummy.m"; sourceTree = "<group>"; };
  122 + DD5E4B08EACB514AA358ABB597C196F2 /* TPNS-iOS-TPNS-iOS-Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "TPNS-iOS-TPNS-iOS-Privacy"; path = "TPNS-iOS-Privacy.bundle"; sourceTree = BUILT_PRODUCTS_DIR; };
  123 + E1AFA8AA8FF61FE300EA7925AFFCD2DE /* tpns_flutter_plugin.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = tpns_flutter_plugin.modulemap; sourceTree = "<group>"; };
  124 + EB2A85A4BE2CC8F0956517CA27B350A9 /* tpns_flutter_plugin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = tpns_flutter_plugin.debug.xcconfig; sourceTree = "<group>"; };
  125 + F30B28FB3E69C3616CCDDD191B69C187 /* tpns_flutter_plugin-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "tpns_flutter_plugin-Info.plist"; sourceTree = "<group>"; };
  126 + F3D55FDA27C2182067AA4631B74C619A /* tpns_flutter_plugin-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "tpns_flutter_plugin-dummy.m"; sourceTree = "<group>"; };
  127 + F4F896AFE723940CF3E9B818A7222DCF /* Pods-Runner-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Runner-acknowledgements.plist"; sourceTree = "<group>"; };
  128 + F8AFAE5B77C66D5C7BB362290948A52B /* Pods-Runner-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Runner-resources.sh"; sourceTree = "<group>"; };
  129 +/* End PBXFileReference section */
  130 +
  131 +/* Begin PBXFrameworksBuildPhase section */
  132 + 5D86964EA78773D5B6033160382FC5B7 /* Frameworks */ = {
  133 + isa = PBXFrameworksBuildPhase;
  134 + buildActionMask = 2147483647;
  135 + files = (
  136 + 628339D03FABC5C8242236431BA715EB /* Foundation.framework in Frameworks */,
  137 + );
  138 + runOnlyForDeploymentPostprocessing = 0;
  139 + };
  140 + 8D1B1E9758B0A46817352DFF5608BD24 /* Frameworks */ = {
  141 + isa = PBXFrameworksBuildPhase;
  142 + buildActionMask = 2147483647;
  143 + files = (
  144 + );
  145 + runOnlyForDeploymentPostprocessing = 0;
  146 + };
  147 + D9D8737C02AD3AAFC27940BCA87D471A /* Frameworks */ = {
  148 + isa = PBXFrameworksBuildPhase;
  149 + buildActionMask = 2147483647;
  150 + files = (
  151 + B9B6CDEC6256725F1AD7020E3B1AAB41 /* Foundation.framework in Frameworks */,
  152 + );
  153 + runOnlyForDeploymentPostprocessing = 0;
  154 + };
  155 +/* End PBXFrameworksBuildPhase section */
  156 +
  157 +/* Begin PBXGroup section */
  158 + 01780FE294023D7DB9B823CD817D0C58 /* TPNS-iOS */ = {
  159 + isa = PBXGroup;
  160 + children = (
  161 + 13EBAC8CE490574C92D1F0B88BD8CD84 /* XGLocalNotification.h */,
  162 + 91D1A30968B0A8A851B78418FEC1FBE3 /* XGPush.h */,
  163 + 0B925843688D2B9B508D202957FAB81B /* XGPushPrivate.h */,
  164 + 6310ADF4AFF33C70E1EAE8C85E4981A9 /* XGVoIPService.h */,
  165 + 156BA645DDFA5E70B8B37E8FFB572DAB /* Frameworks */,
  166 + CB7436A592F93FF34C5E005CD5268163 /* Resources */,
  167 + 302B365DEBA25F2F3A7CBCF8F295C2EB /* Support Files */,
  168 + );
  169 + name = "TPNS-iOS";
  170 + path = "TPNS-iOS";
  171 + sourceTree = "<group>";
  172 + };
  173 + 0B5F965B3E5DF8860F126552F6762721 /* plugins */ = {
  174 + isa = PBXGroup;
  175 + children = (
  176 + 3BAE1FB821EF4E5F67AFD172AD72D17A /* tpns_flutter_plugin */,
  177 + );
  178 + name = plugins;
  179 + path = plugins;
  180 + sourceTree = "<group>";
  181 + };
  182 + 156BA645DDFA5E70B8B37E8FFB572DAB /* Frameworks */ = {
  183 + isa = PBXGroup;
  184 + children = (
  185 + 85CE51AD2AEA97EDAB7C2E20D3C890DC /* libXG-SDK-Cloud.a */,
  186 + 6300CA05A1AE52A3B5E577FC47EA3EE2 /* XGInAppMessage.framework */,
  187 + D063F805FC3F93E650D8CC9EE2535010 /* XGMTACloud.framework */,
  188 + );
  189 + name = Frameworks;
  190 + sourceTree = "<group>";
  191 + };
  192 + 202BC177A19C6EFDDA7D5C28DBE2945A /* Support Files */ = {
  193 + isa = PBXGroup;
  194 + children = (
  195 + 9EB1587B06C67E684BAD1645588CEFEF /* Flutter.debug.xcconfig */,
  196 + 1246F3BC7472A5A0F612B765EBC1AE53 /* Flutter.release.xcconfig */,
  197 + );
  198 + name = "Support Files";
  199 + path = "../Pods/Target Support Files/Flutter";
  200 + sourceTree = "<group>";
  201 + };
  202 + 302B365DEBA25F2F3A7CBCF8F295C2EB /* Support Files */ = {
  203 + isa = PBXGroup;
  204 + children = (
  205 + 40564192047E554630A46AD57E0B87FD /* ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist */,
  206 + 5046B34AB342C8843DA08C68D48E737B /* TPNS-iOS.debug.xcconfig */,
  207 + 7637851C2493673EC7CF4E26FC451A28 /* TPNS-iOS.release.xcconfig */,
  208 + );
  209 + name = "Support Files";
  210 + path = "../Target Support Files/TPNS-iOS";
  211 + sourceTree = "<group>";
  212 + };
  213 + 3BAE1FB821EF4E5F67AFD172AD72D17A /* tpns_flutter_plugin */ = {
  214 + isa = PBXGroup;
  215 + children = (
  216 + 89C2DB8DD9AB94CF10C0685AB3026CEF /* ios */,
  217 + );
  218 + name = tpns_flutter_plugin;
  219 + path = tpns_flutter_plugin;
  220 + sourceTree = "<group>";
  221 + };
  222 + 415FE012E8B578C592165D63E8E1DF90 /* .. */ = {
  223 + isa = PBXGroup;
  224 + children = (
  225 + 61C9999B5003BC66F89478AEB25F0C64 /* example */,
  226 + );
  227 + name = ..;
  228 + path = ..;
  229 + sourceTree = "<group>";
  230 + };
  231 + 489E481CD4B18A93A9025CB7297DB217 /* tpns_flutter_plugin */ = {
  232 + isa = PBXGroup;
  233 + children = (
  234 + CFFCDC35CE7B34ADBFB534AFCD373A58 /* .. */,
  235 + B20EA0C40385729DD7CEE141AF4A5E5D /* Pod */,
  236 + 56095C1EC6D6581E542FE572720CDE6A /* Support Files */,
  237 + );
  238 + name = tpns_flutter_plugin;
  239 + path = ../.symlinks/plugins/tpns_flutter_plugin/ios;
  240 + sourceTree = "<group>";
  241 + };
  242 + 4FA106D6D09DD488C04FB7AFDE47E627 /* Development Pods */ = {
  243 + isa = PBXGroup;
  244 + children = (
  245 + 7BE14DF0D2E6218488538D99AE672770 /* Flutter */,
  246 + 489E481CD4B18A93A9025CB7297DB217 /* tpns_flutter_plugin */,
  247 + );
  248 + name = "Development Pods";
  249 + sourceTree = "<group>";
  250 + };
  251 + 56095C1EC6D6581E542FE572720CDE6A /* Support Files */ = {
  252 + isa = PBXGroup;
  253 + children = (
  254 + E1AFA8AA8FF61FE300EA7925AFFCD2DE /* tpns_flutter_plugin.modulemap */,
  255 + F3D55FDA27C2182067AA4631B74C619A /* tpns_flutter_plugin-dummy.m */,
  256 + F30B28FB3E69C3616CCDDD191B69C187 /* tpns_flutter_plugin-Info.plist */,
  257 + 2CCA6DAF1C489730E8258F5797C8DBCB /* tpns_flutter_plugin-prefix.pch */,
  258 + 81DB49BA69AF7134557F8FAE8DF335A0 /* tpns_flutter_plugin-umbrella.h */,
  259 + EB2A85A4BE2CC8F0956517CA27B350A9 /* tpns_flutter_plugin.debug.xcconfig */,
  260 + 560E985EE8E41A989444E6E21E8E0840 /* tpns_flutter_plugin.release.xcconfig */,
  261 + );
  262 + name = "Support Files";
  263 + path = "../../../../Pods/Target Support Files/tpns_flutter_plugin";
  264 + sourceTree = "<group>";
  265 + };
  266 + 61C9999B5003BC66F89478AEB25F0C64 /* example */ = {
  267 + isa = PBXGroup;
  268 + children = (
  269 + F1F5A295F0699C2CE66A05973BCAD54C /* ios */,
  270 + );
  271 + name = example;
  272 + path = example;
  273 + sourceTree = "<group>";
  274 + };
  275 + 791C6E4B424AF06279F8918FA67B8ED6 /* Targets Support Files */ = {
  276 + isa = PBXGroup;
  277 + children = (
  278 + DDA5FA1574535853DB99F3ECAD797BD3 /* Pods-Runner */,
  279 + );
  280 + name = "Targets Support Files";
  281 + sourceTree = "<group>";
  282 + };
  283 + 7BE14DF0D2E6218488538D99AE672770 /* Flutter */ = {
  284 + isa = PBXGroup;
  285 + children = (
  286 + FB1041DEA5CFD8475D7944A01BC0E7F1 /* Pod */,
  287 + 202BC177A19C6EFDDA7D5C28DBE2945A /* Support Files */,
  288 + );
  289 + name = Flutter;
  290 + path = ../Flutter;
  291 + sourceTree = "<group>";
  292 + };
  293 + 89C2DB8DD9AB94CF10C0685AB3026CEF /* ios */ = {
  294 + isa = PBXGroup;
  295 + children = (
  296 + 9E1004132C4C2C74AAFA0C7F25A760F8 /* Classes */,
  297 + );
  298 + name = ios;
  299 + path = ios;
  300 + sourceTree = "<group>";
  301 + };
  302 + 9E1004132C4C2C74AAFA0C7F25A760F8 /* Classes */ = {
  303 + isa = PBXGroup;
  304 + children = (
  305 + 33C6C5E82F4331A58B9DB7397DEE54B2 /* XgFlutterPlugin.h */,
  306 + BFC6428F6299B62A0476363D0E6598F5 /* XgFlutterPlugin.m */,
  307 + );
  308 + name = Classes;
  309 + path = Classes;
  310 + sourceTree = "<group>";
  311 + };
  312 + B20EA0C40385729DD7CEE141AF4A5E5D /* Pod */ = {
  313 + isa = PBXGroup;
  314 + children = (
  315 + BEA31E200AAE2F57835084397F6F4B79 /* LICENSE */,
  316 + 08A4EFC3611ED5FD0888BF98EA5FBFF7 /* tpns_flutter_plugin.podspec */,
  317 + );
  318 + name = Pod;
  319 + sourceTree = "<group>";
  320 + };
  321 + C0A869DDEF078ACE8035DE743A8A0240 /* .symlinks */ = {
  322 + isa = PBXGroup;
  323 + children = (
  324 + 0B5F965B3E5DF8860F126552F6762721 /* plugins */,
  325 + );
  326 + name = .symlinks;
  327 + path = .symlinks;
  328 + sourceTree = "<group>";
  329 + };
  330 + CB7436A592F93FF34C5E005CD5268163 /* Resources */ = {
  331 + isa = PBXGroup;
  332 + children = (
  333 + 552A52CD728EA0BC3A42E0C170E8BFDA /* PrivacyInfo.xcprivacy */,
  334 + );
  335 + name = Resources;
  336 + sourceTree = "<group>";
  337 + };
  338 + CF1408CF629C7361332E53B88F7BD30C = {
  339 + isa = PBXGroup;
  340 + children = (
  341 + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
  342 + 4FA106D6D09DD488C04FB7AFDE47E627 /* Development Pods */,
  343 + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
  344 + EF86D020AC62E9AD3544966A86DE6705 /* Pods */,
  345 + DB8AA11FFC5B082E673DD0F45B0BC24F /* Products */,
  346 + 791C6E4B424AF06279F8918FA67B8ED6 /* Targets Support Files */,
  347 + );
  348 + sourceTree = "<group>";
  349 + };
  350 + CFFCDC35CE7B34ADBFB534AFCD373A58 /* .. */ = {
  351 + isa = PBXGroup;
  352 + children = (
  353 + 415FE012E8B578C592165D63E8E1DF90 /* .. */,
  354 + );
  355 + name = ..;
  356 + path = ../../../../../../ios;
  357 + sourceTree = "<group>";
  358 + };
  359 + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
  360 + isa = PBXGroup;
  361 + children = (
  362 + E4801F62A6B08CD9B5410329F1A18FDE /* iOS */,
  363 + );
  364 + name = Frameworks;
  365 + sourceTree = "<group>";
  366 + };
  367 + DB8AA11FFC5B082E673DD0F45B0BC24F /* Products */ = {
  368 + isa = PBXGroup;
  369 + children = (
  370 + 669E8F25E1897672BDB80B7EB784DA24 /* Pods-Runner */,
  371 + DD5E4B08EACB514AA358ABB597C196F2 /* TPNS-iOS-TPNS-iOS-Privacy */,
  372 + 8AD81E7A2AD6FD241E912FB477B34910 /* tpns_flutter_plugin */,
  373 + );
  374 + name = Products;
  375 + sourceTree = "<group>";
  376 + };
  377 + DDA5FA1574535853DB99F3ECAD797BD3 /* Pods-Runner */ = {
  378 + isa = PBXGroup;
  379 + children = (
  380 + 50BE728FF2BA0EB1D96A97EBEE18F49B /* Pods-Runner.modulemap */,
  381 + 0CB4BE22914F355C255E51F30DA50CB1 /* Pods-Runner-acknowledgements.markdown */,
  382 + F4F896AFE723940CF3E9B818A7222DCF /* Pods-Runner-acknowledgements.plist */,
  383 + D647505D22C08B8E9F7A45B8E608CD15 /* Pods-Runner-dummy.m */,
  384 + 078E527AF5F360F32D4242E8DE602489 /* Pods-Runner-Info.plist */,
  385 + F8AFAE5B77C66D5C7BB362290948A52B /* Pods-Runner-resources.sh */,
  386 + 0DF785CCAF72D753F11EF2F739FD0167 /* Pods-Runner-umbrella.h */,
  387 + 6696DA048BA8D0F7EF9587343AA80E22 /* Pods-Runner.debug.xcconfig */,
  388 + 6F49B4428DD6C5310911D3B27A845681 /* Pods-Runner.profile.xcconfig */,
  389 + 139ADC8F1F2B4A48D4DA58E48F16EB8F /* Pods-Runner.release.xcconfig */,
  390 + );
  391 + name = "Pods-Runner";
  392 + path = "Target Support Files/Pods-Runner";
  393 + sourceTree = "<group>";
  394 + };
  395 + E4801F62A6B08CD9B5410329F1A18FDE /* iOS */ = {
  396 + isa = PBXGroup;
  397 + children = (
  398 + 384DDA2CB25005BD6479B5987C619DD4 /* Foundation.framework */,
  399 + );
  400 + name = iOS;
  401 + sourceTree = "<group>";
  402 + };
  403 + EF86D020AC62E9AD3544966A86DE6705 /* Pods */ = {
  404 + isa = PBXGroup;
  405 + children = (
  406 + 01780FE294023D7DB9B823CD817D0C58 /* TPNS-iOS */,
  407 + );
  408 + name = Pods;
  409 + sourceTree = "<group>";
  410 + };
  411 + F1F5A295F0699C2CE66A05973BCAD54C /* ios */ = {
  412 + isa = PBXGroup;
  413 + children = (
  414 + C0A869DDEF078ACE8035DE743A8A0240 /* .symlinks */,
  415 + );
  416 + name = ios;
  417 + path = ios;
  418 + sourceTree = "<group>";
  419 + };
  420 + FB1041DEA5CFD8475D7944A01BC0E7F1 /* Pod */ = {
  421 + isa = PBXGroup;
  422 + children = (
  423 + 263CBCB3D286604C9236ABEAE563FE4F /* Flutter.podspec */,
  424 + );
  425 + name = Pod;
  426 + sourceTree = "<group>";
  427 + };
  428 +/* End PBXGroup section */
  429 +
  430 +/* Begin PBXHeadersBuildPhase section */
  431 + 6A4378B3174C1A3F423BB63AA603041F /* Headers */ = {
  432 + isa = PBXHeadersBuildPhase;
  433 + buildActionMask = 2147483647;
  434 + files = (
  435 + 0660EEF95D228A052386FBE272345035 /* Pods-Runner-umbrella.h in Headers */,
  436 + );
  437 + runOnlyForDeploymentPostprocessing = 0;
  438 + };
  439 + 7217ECAEEF291C393E8EC0C9581F02B8 /* Headers */ = {
  440 + isa = PBXHeadersBuildPhase;
  441 + buildActionMask = 2147483647;
  442 + files = (
  443 + 2F2C95BEDF98DC366AE8B683B2A2EE81 /* tpns_flutter_plugin-umbrella.h in Headers */,
  444 + A38A54224985A4F6A597A7124A4E4A05 /* XgFlutterPlugin.h in Headers */,
  445 + );
  446 + runOnlyForDeploymentPostprocessing = 0;
  447 + };
  448 +/* End PBXHeadersBuildPhase section */
  449 +
  450 +/* Begin PBXNativeTarget section */
  451 + 3F4F25993703000226A9174AF7BB3A43 /* tpns_flutter_plugin */ = {
  452 + isa = PBXNativeTarget;
  453 + buildConfigurationList = 0C0CC3CF0A5CAC46C676F2C8D554867B /* Build configuration list for PBXNativeTarget "tpns_flutter_plugin" */;
  454 + buildPhases = (
  455 + 7217ECAEEF291C393E8EC0C9581F02B8 /* Headers */,
  456 + 1A01E92612A1FFD0FB5C86C05AB82816 /* Sources */,
  457 + D9D8737C02AD3AAFC27940BCA87D471A /* Frameworks */,
  458 + 9AC71E0023ABCB6BC7139E99007F5814 /* Resources */,
  459 + );
  460 + buildRules = (
  461 + );
  462 + dependencies = (
  463 + AC3E69051A287D411FCC4BC4D09FE1A4 /* PBXTargetDependency */,
  464 + BF3C432F0A3212673C55E0712F7BE9B5 /* PBXTargetDependency */,
  465 + );
  466 + name = tpns_flutter_plugin;
  467 + productName = tpns_flutter_plugin;
  468 + productReference = 8AD81E7A2AD6FD241E912FB477B34910 /* tpns_flutter_plugin */;
  469 + productType = "com.apple.product-type.framework";
  470 + };
  471 + 429EB5B6EB47BE9F4213CA909A199201 /* TPNS-iOS-TPNS-iOS-Privacy */ = {
  472 + isa = PBXNativeTarget;
  473 + buildConfigurationList = 1321C0A40D4B452AA509A3DC919F7D9E /* Build configuration list for PBXNativeTarget "TPNS-iOS-TPNS-iOS-Privacy" */;
  474 + buildPhases = (
  475 + 014B0D7F1A3CBB83083DCE4C10F83D39 /* Sources */,
  476 + 8D1B1E9758B0A46817352DFF5608BD24 /* Frameworks */,
  477 + B5E52990D099F9AB7063775BD2A15E4A /* Resources */,
  478 + );
  479 + buildRules = (
  480 + );
  481 + dependencies = (
  482 + );
  483 + name = "TPNS-iOS-TPNS-iOS-Privacy";
  484 + productName = "TPNS-iOS-Privacy";
  485 + productReference = DD5E4B08EACB514AA358ABB597C196F2 /* TPNS-iOS-TPNS-iOS-Privacy */;
  486 + productType = "com.apple.product-type.bundle";
  487 + };
  488 + 8B74B458B450D74B75744B87BD747314 /* Pods-Runner */ = {
  489 + isa = PBXNativeTarget;
  490 + buildConfigurationList = 240479E6F4CDDD946D8E62C00FA210E3 /* Build configuration list for PBXNativeTarget "Pods-Runner" */;
  491 + buildPhases = (
  492 + 6A4378B3174C1A3F423BB63AA603041F /* Headers */,
  493 + 8CA84D77670C96991478B000FA007E6E /* Sources */,
  494 + 5D86964EA78773D5B6033160382FC5B7 /* Frameworks */,
  495 + 103ECE34FE6B120F52C33179E324DB6E /* Resources */,
  496 + );
  497 + buildRules = (
  498 + );
  499 + dependencies = (
  500 + 75139FACE372A363D67B4942046AD7CC /* PBXTargetDependency */,
  501 + 9BD5CA64C8A037F687958F3998A01C06 /* PBXTargetDependency */,
  502 + FCE28DE3C4C682A64DAF3B690E0FB4B5 /* PBXTargetDependency */,
  503 + );
  504 + name = "Pods-Runner";
  505 + productName = Pods_Runner;
  506 + productReference = 669E8F25E1897672BDB80B7EB784DA24 /* Pods-Runner */;
  507 + productType = "com.apple.product-type.framework";
  508 + };
  509 +/* End PBXNativeTarget section */
  510 +
  511 +/* Begin PBXProject section */
  512 + BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
  513 + isa = PBXProject;
  514 + attributes = {
  515 + LastSwiftUpdateCheck = 1600;
  516 + LastUpgradeCheck = 1600;
  517 + };
  518 + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
  519 + compatibilityVersion = "Xcode 12.0";
  520 + developmentRegion = en;
  521 + hasScannedForEncodings = 0;
  522 + knownRegions = (
  523 + Base,
  524 + en,
  525 + );
  526 + mainGroup = CF1408CF629C7361332E53B88F7BD30C;
  527 + minimizedProjectReferenceProxies = 0;
  528 + preferredProjectObjectVersion = 77;
  529 + productRefGroup = DB8AA11FFC5B082E673DD0F45B0BC24F /* Products */;
  530 + projectDirPath = "";
  531 + projectRoot = "";
  532 + targets = (
  533 + 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */,
  534 + 8B74B458B450D74B75744B87BD747314 /* Pods-Runner */,
  535 + E819DAFD9B8C0DA4E037009DE8EF9900 /* TPNS-iOS */,
  536 + 429EB5B6EB47BE9F4213CA909A199201 /* TPNS-iOS-TPNS-iOS-Privacy */,
  537 + 3F4F25993703000226A9174AF7BB3A43 /* tpns_flutter_plugin */,
  538 + );
  539 + };
  540 +/* End PBXProject section */
  541 +
  542 +/* Begin PBXResourcesBuildPhase section */
  543 + 103ECE34FE6B120F52C33179E324DB6E /* Resources */ = {
  544 + isa = PBXResourcesBuildPhase;
  545 + buildActionMask = 2147483647;
  546 + files = (
  547 + );
  548 + runOnlyForDeploymentPostprocessing = 0;
  549 + };
  550 + 9AC71E0023ABCB6BC7139E99007F5814 /* Resources */ = {
  551 + isa = PBXResourcesBuildPhase;
  552 + buildActionMask = 2147483647;
  553 + files = (
  554 + );
  555 + runOnlyForDeploymentPostprocessing = 0;
  556 + };
  557 + B5E52990D099F9AB7063775BD2A15E4A /* Resources */ = {
  558 + isa = PBXResourcesBuildPhase;
  559 + buildActionMask = 2147483647;
  560 + files = (
  561 + F11B6D852D2AA9A2195314DDB7B76565 /* PrivacyInfo.xcprivacy in Resources */,
  562 + );
  563 + runOnlyForDeploymentPostprocessing = 0;
  564 + };
  565 +/* End PBXResourcesBuildPhase section */
  566 +
  567 +/* Begin PBXSourcesBuildPhase section */
  568 + 014B0D7F1A3CBB83083DCE4C10F83D39 /* Sources */ = {
  569 + isa = PBXSourcesBuildPhase;
  570 + buildActionMask = 2147483647;
  571 + files = (
  572 + );
  573 + runOnlyForDeploymentPostprocessing = 0;
  574 + };
  575 + 1A01E92612A1FFD0FB5C86C05AB82816 /* Sources */ = {
  576 + isa = PBXSourcesBuildPhase;
  577 + buildActionMask = 2147483647;
  578 + files = (
  579 + 7700E941F2EB3354BB7392B962A3031B /* tpns_flutter_plugin-dummy.m in Sources */,
  580 + A57EF5DD49EEB5B6D29611EB1BEA7F23 /* XgFlutterPlugin.m in Sources */,
  581 + );
  582 + runOnlyForDeploymentPostprocessing = 0;
  583 + };
  584 + 8CA84D77670C96991478B000FA007E6E /* Sources */ = {
  585 + isa = PBXSourcesBuildPhase;
  586 + buildActionMask = 2147483647;
  587 + files = (
  588 + 5A6BC2764686A0069C23D26E5B68D42F /* Pods-Runner-dummy.m in Sources */,
  589 + );
  590 + runOnlyForDeploymentPostprocessing = 0;
  591 + };
  592 +/* End PBXSourcesBuildPhase section */
  593 +
  594 +/* Begin PBXTargetDependency section */
  595 + 0C8089F606AD1230A783BE243F0A79ED /* PBXTargetDependency */ = {
  596 + isa = PBXTargetDependency;
  597 + name = "TPNS-iOS-TPNS-iOS-Privacy";
  598 + target = 429EB5B6EB47BE9F4213CA909A199201 /* TPNS-iOS-TPNS-iOS-Privacy */;
  599 + targetProxy = B3A0C77E150C5BFEC9F5D32F45D74DC1 /* PBXContainerItemProxy */;
  600 + };
  601 + 75139FACE372A363D67B4942046AD7CC /* PBXTargetDependency */ = {
  602 + isa = PBXTargetDependency;
  603 + name = Flutter;
  604 + target = 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */;
  605 + targetProxy = 96C02A4446559DED1276283CE88DF41E /* PBXContainerItemProxy */;
  606 + };
  607 + 9BD5CA64C8A037F687958F3998A01C06 /* PBXTargetDependency */ = {
  608 + isa = PBXTargetDependency;
  609 + name = "TPNS-iOS";
  610 + target = E819DAFD9B8C0DA4E037009DE8EF9900 /* TPNS-iOS */;
  611 + targetProxy = 67AFF64117BCEA038907AB66D8CD3011 /* PBXContainerItemProxy */;
  612 + };
  613 + AC3E69051A287D411FCC4BC4D09FE1A4 /* PBXTargetDependency */ = {
  614 + isa = PBXTargetDependency;
  615 + name = Flutter;
  616 + target = 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */;
  617 + targetProxy = 6E14FF8616A83427376639EEDE4777D9 /* PBXContainerItemProxy */;
  618 + };
  619 + BF3C432F0A3212673C55E0712F7BE9B5 /* PBXTargetDependency */ = {
  620 + isa = PBXTargetDependency;
  621 + name = "TPNS-iOS";
  622 + target = E819DAFD9B8C0DA4E037009DE8EF9900 /* TPNS-iOS */;
  623 + targetProxy = DCDFE883A56B832EA0D951604B6838FB /* PBXContainerItemProxy */;
  624 + };
  625 + FCE28DE3C4C682A64DAF3B690E0FB4B5 /* PBXTargetDependency */ = {
  626 + isa = PBXTargetDependency;
  627 + name = tpns_flutter_plugin;
  628 + target = 3F4F25993703000226A9174AF7BB3A43 /* tpns_flutter_plugin */;
  629 + targetProxy = 58F8C27B685F22BB995CFA102E22BF41 /* PBXContainerItemProxy */;
  630 + };
  631 +/* End PBXTargetDependency section */
  632 +
  633 +/* Begin XCBuildConfiguration section */
  634 + 02D6CFE0C1F33B4F137C8B963A98BC19 /* Debug */ = {
  635 + isa = XCBuildConfiguration;
  636 + baseConfigurationReference = EB2A85A4BE2CC8F0956517CA27B350A9 /* tpns_flutter_plugin.debug.xcconfig */;
  637 + buildSettings = {
  638 + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
  639 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  640 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  641 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  642 + CURRENT_PROJECT_VERSION = 1;
  643 + DEFINES_MODULE = YES;
  644 + DYLIB_COMPATIBILITY_VERSION = 1;
  645 + DYLIB_CURRENT_VERSION = 1;
  646 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  647 + ENABLE_BITCODE = NO;
  648 + ENABLE_MODULE_VERIFIER = NO;
  649 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  650 + "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
  651 + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
  652 + "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
  653 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64\"",
  654 + "$(inherited)",
  655 + );
  656 + "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
  657 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
  658 + "$(inherited)",
  659 + );
  660 + GCC_PREFIX_HEADER = "Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-prefix.pch";
  661 + GENERATE_INFOPLIST_FILE = NO;
  662 + INFOPLIST_FILE = "Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-Info.plist";
  663 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  664 + LD_RUNPATH_SEARCH_PATHS = (
  665 + "$(inherited)",
  666 + "@executable_path/Frameworks",
  667 + "@loader_path/Frameworks",
  668 + );
  669 + MACH_O_TYPE = staticlib;
  670 + MODULEMAP_FILE = "Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin.modulemap";
  671 + ONLY_ACTIVE_ARCH = NO;
  672 + OTHER_LDFLAGS = (
  673 + "$(inherited)",
  674 + "-framework",
  675 + Flutter,
  676 + );
  677 + PRODUCT_MODULE_NAME = tpns_flutter_plugin;
  678 + PRODUCT_NAME = tpns_flutter_plugin;
  679 + SDKROOT = iphoneos;
  680 + SKIP_INSTALL = YES;
  681 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
  682 + SWIFT_INSTALL_OBJC_HEADER = YES;
  683 + SWIFT_VERSION = 5.0;
  684 + TARGETED_DEVICE_FAMILY = "1,2";
  685 + "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
  686 + VERSIONING_SYSTEM = "apple-generic";
  687 + VERSION_INFO_PREFIX = "";
  688 + };
  689 + name = Debug;
  690 + };
  691 + 042D0DC2C49052B4D664F37DBB077B4F /* Profile */ = {
  692 + isa = XCBuildConfiguration;
  693 + baseConfigurationReference = 7637851C2493673EC7CF4E26FC451A28 /* TPNS-iOS.release.xcconfig */;
  694 + buildSettings = {
  695 + CLANG_ENABLE_OBJC_WEAK = NO;
  696 + CODE_SIGNING_ALLOWED = NO;
  697 + CODE_SIGNING_IDENTITY = "-";
  698 + CODE_SIGNING_REQUIRED = NO;
  699 + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/TPNS-iOS";
  700 + EXPANDED_CODE_SIGN_IDENTITY = "-";
  701 + IBSC_MODULE = TPNS_iOS;
  702 + INFOPLIST_FILE = "Target Support Files/TPNS-iOS/ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist";
  703 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
  704 + PRODUCT_NAME = "TPNS-iOS-Privacy";
  705 + SDKROOT = iphoneos;
  706 + SKIP_INSTALL = YES;
  707 + TARGETED_DEVICE_FAMILY = "1,2";
  708 + VALIDATE_PRODUCT = YES;
  709 + WRAPPER_EXTENSION = bundle;
  710 + };
  711 + name = Profile;
  712 + };
  713 + 045E947792E89940432E94F5E6A5DBED /* Release */ = {
  714 + isa = XCBuildConfiguration;
  715 + baseConfigurationReference = 139ADC8F1F2B4A48D4DA58E48F16EB8F /* Pods-Runner.release.xcconfig */;
  716 + buildSettings = {
  717 + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
  718 + CLANG_ENABLE_OBJC_WEAK = NO;
  719 + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
  720 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  721 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  722 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  723 + CURRENT_PROJECT_VERSION = 1;
  724 + DEFINES_MODULE = YES;
  725 + DYLIB_COMPATIBILITY_VERSION = 1;
  726 + DYLIB_CURRENT_VERSION = 1;
  727 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  728 + ENABLE_BITCODE = NO;
  729 + ENABLE_MODULE_VERIFIER = NO;
  730 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  731 + "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
  732 + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
  733 + "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
  734 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
  735 + "$(inherited)",
  736 + );
  737 + "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
  738 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
  739 + "$(inherited)",
  740 + );
  741 + INFOPLIST_FILE = "Target Support Files/Pods-Runner/Pods-Runner-Info.plist";
  742 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  743 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  744 + LD_RUNPATH_SEARCH_PATHS = (
  745 + "$(inherited)",
  746 + "@executable_path/Frameworks",
  747 + "@loader_path/Frameworks",
  748 + );
  749 + MACH_O_TYPE = staticlib;
  750 + MODULEMAP_FILE = "Target Support Files/Pods-Runner/Pods-Runner.modulemap";
  751 + OTHER_LDFLAGS = (
  752 + "$(inherited)",
  753 + "-framework",
  754 + Flutter,
  755 + );
  756 + OTHER_LIBTOOLFLAGS = "";
  757 + PODS_ROOT = "$(SRCROOT)";
  758 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
  759 + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
  760 + SDKROOT = iphoneos;
  761 + SKIP_INSTALL = YES;
  762 + TARGETED_DEVICE_FAMILY = "1,2";
  763 + VALIDATE_PRODUCT = YES;
  764 + "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
  765 + VERSIONING_SYSTEM = "apple-generic";
  766 + VERSION_INFO_PREFIX = "";
  767 + };
  768 + name = Release;
  769 + };
  770 + 0CFFCC29B035AA1C900AD2371AA350B6 /* Profile */ = {
  771 + isa = XCBuildConfiguration;
  772 + baseConfigurationReference = 6F49B4428DD6C5310911D3B27A845681 /* Pods-Runner.profile.xcconfig */;
  773 + buildSettings = {
  774 + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
  775 + CLANG_ENABLE_OBJC_WEAK = NO;
  776 + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
  777 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  778 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  779 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  780 + CURRENT_PROJECT_VERSION = 1;
  781 + DEFINES_MODULE = YES;
  782 + DYLIB_COMPATIBILITY_VERSION = 1;
  783 + DYLIB_CURRENT_VERSION = 1;
  784 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  785 + ENABLE_BITCODE = NO;
  786 + ENABLE_MODULE_VERIFIER = NO;
  787 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  788 + "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
  789 + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
  790 + "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
  791 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
  792 + "$(inherited)",
  793 + );
  794 + "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
  795 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
  796 + "$(inherited)",
  797 + );
  798 + INFOPLIST_FILE = "Target Support Files/Pods-Runner/Pods-Runner-Info.plist";
  799 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  800 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  801 + LD_RUNPATH_SEARCH_PATHS = (
  802 + "$(inherited)",
  803 + "@executable_path/Frameworks",
  804 + "@loader_path/Frameworks",
  805 + );
  806 + MACH_O_TYPE = staticlib;
  807 + MODULEMAP_FILE = "Target Support Files/Pods-Runner/Pods-Runner.modulemap";
  808 + OTHER_LDFLAGS = (
  809 + "$(inherited)",
  810 + "-framework",
  811 + Flutter,
  812 + );
  813 + OTHER_LIBTOOLFLAGS = "";
  814 + PODS_ROOT = "$(SRCROOT)";
  815 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
  816 + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
  817 + SDKROOT = iphoneos;
  818 + SKIP_INSTALL = YES;
  819 + TARGETED_DEVICE_FAMILY = "1,2";
  820 + VALIDATE_PRODUCT = YES;
  821 + "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
  822 + VERSIONING_SYSTEM = "apple-generic";
  823 + VERSION_INFO_PREFIX = "";
  824 + };
  825 + name = Profile;
  826 + };
  827 + 1807ED7972F5660DA45DC864522CF58E /* Debug */ = {
  828 + isa = XCBuildConfiguration;
  829 + baseConfigurationReference = 5046B34AB342C8843DA08C68D48E737B /* TPNS-iOS.debug.xcconfig */;
  830 + buildSettings = {
  831 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  832 + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
  833 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  834 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
  835 + LD_RUNPATH_SEARCH_PATHS = (
  836 + "$(inherited)",
  837 + "@executable_path/Frameworks",
  838 + );
  839 + ONLY_ACTIVE_ARCH = NO;
  840 + SDKROOT = iphoneos;
  841 + TARGETED_DEVICE_FAMILY = "1,2";
  842 + };
  843 + name = Debug;
  844 + };
  845 + 1ED0E16DFC7967E6EC9E726E17CD3CFE /* Debug */ = {
  846 + isa = XCBuildConfiguration;
  847 + baseConfigurationReference = 5046B34AB342C8843DA08C68D48E737B /* TPNS-iOS.debug.xcconfig */;
  848 + buildSettings = {
  849 + CODE_SIGNING_ALLOWED = NO;
  850 + CODE_SIGNING_IDENTITY = "-";
  851 + CODE_SIGNING_REQUIRED = NO;
  852 + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/TPNS-iOS";
  853 + EXPANDED_CODE_SIGN_IDENTITY = "-";
  854 + IBSC_MODULE = TPNS_iOS;
  855 + INFOPLIST_FILE = "Target Support Files/TPNS-iOS/ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist";
  856 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
  857 + ONLY_ACTIVE_ARCH = NO;
  858 + PRODUCT_NAME = "TPNS-iOS-Privacy";
  859 + SDKROOT = iphoneos;
  860 + SKIP_INSTALL = YES;
  861 + TARGETED_DEVICE_FAMILY = "1,2";
  862 + WRAPPER_EXTENSION = bundle;
  863 + };
  864 + name = Debug;
  865 + };
  866 + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */ = {
  867 + isa = XCBuildConfiguration;
  868 + buildSettings = {
  869 + ALWAYS_SEARCH_USER_PATHS = NO;
  870 + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
  871 + CLANG_ANALYZER_NONNULL = YES;
  872 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  873 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  874 + CLANG_CXX_LIBRARY = "libc++";
  875 + CLANG_ENABLE_MODULES = YES;
  876 + CLANG_ENABLE_OBJC_ARC = YES;
  877 + CLANG_ENABLE_OBJC_WEAK = YES;
  878 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  879 + CLANG_WARN_BOOL_CONVERSION = YES;
  880 + CLANG_WARN_COMMA = YES;
  881 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  882 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  883 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  884 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  885 + CLANG_WARN_EMPTY_BODY = YES;
  886 + CLANG_WARN_ENUM_CONVERSION = YES;
  887 + CLANG_WARN_INFINITE_RECURSION = YES;
  888 + CLANG_WARN_INT_CONVERSION = YES;
  889 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  890 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  891 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  892 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  893 + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
  894 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  895 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  896 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  897 + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
  898 + CLANG_WARN_UNREACHABLE_CODE = YES;
  899 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  900 + COPY_PHASE_STRIP = NO;
  901 + DEBUG_INFORMATION_FORMAT = dwarf;
  902 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  903 + ENABLE_TESTABILITY = YES;
  904 + GCC_C_LANGUAGE_STANDARD = gnu11;
  905 + GCC_DYNAMIC_NO_PIC = NO;
  906 + GCC_NO_COMMON_BLOCKS = YES;
  907 + GCC_OPTIMIZATION_LEVEL = 0;
  908 + GCC_PREPROCESSOR_DEFINITIONS = (
  909 + "POD_CONFIGURATION_DEBUG=1",
  910 + "DEBUG=1",
  911 + "$(inherited)",
  912 + );
  913 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  914 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  915 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  916 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  917 + GCC_WARN_UNUSED_FUNCTION = YES;
  918 + GCC_WARN_UNUSED_VARIABLE = YES;
  919 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  920 + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
  921 + MTL_FAST_MATH = YES;
  922 + ONLY_ACTIVE_ARCH = YES;
  923 + PRODUCT_NAME = "$(TARGET_NAME)";
  924 + STRIP_INSTALLED_PRODUCT = NO;
  925 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
  926 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  927 + SWIFT_VERSION = 5.0;
  928 + SYMROOT = "${SRCROOT}/../build";
  929 + };
  930 + name = Debug;
  931 + };
  932 + 3E15765C7204CAA3AD15867283B32A69 /* Profile */ = {
  933 + isa = XCBuildConfiguration;
  934 + baseConfigurationReference = 560E985EE8E41A989444E6E21E8E0840 /* tpns_flutter_plugin.release.xcconfig */;
  935 + buildSettings = {
  936 + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
  937 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  938 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  939 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  940 + CURRENT_PROJECT_VERSION = 1;
  941 + DEFINES_MODULE = YES;
  942 + DYLIB_COMPATIBILITY_VERSION = 1;
  943 + DYLIB_CURRENT_VERSION = 1;
  944 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  945 + ENABLE_BITCODE = NO;
  946 + ENABLE_MODULE_VERIFIER = NO;
  947 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  948 + "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
  949 + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
  950 + "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
  951 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
  952 + "$(inherited)",
  953 + );
  954 + "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
  955 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
  956 + "$(inherited)",
  957 + );
  958 + GCC_PREFIX_HEADER = "Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-prefix.pch";
  959 + GENERATE_INFOPLIST_FILE = NO;
  960 + INFOPLIST_FILE = "Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-Info.plist";
  961 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  962 + LD_RUNPATH_SEARCH_PATHS = (
  963 + "$(inherited)",
  964 + "@executable_path/Frameworks",
  965 + "@loader_path/Frameworks",
  966 + );
  967 + MACH_O_TYPE = staticlib;
  968 + MODULEMAP_FILE = "Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin.modulemap";
  969 + OTHER_LDFLAGS = (
  970 + "$(inherited)",
  971 + "-framework",
  972 + Flutter,
  973 + );
  974 + PRODUCT_MODULE_NAME = tpns_flutter_plugin;
  975 + PRODUCT_NAME = tpns_flutter_plugin;
  976 + SDKROOT = iphoneos;
  977 + SKIP_INSTALL = YES;
  978 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
  979 + SWIFT_INSTALL_OBJC_HEADER = YES;
  980 + SWIFT_VERSION = 5.0;
  981 + TARGETED_DEVICE_FAMILY = "1,2";
  982 + VALIDATE_PRODUCT = YES;
  983 + "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
  984 + VERSIONING_SYSTEM = "apple-generic";
  985 + VERSION_INFO_PREFIX = "";
  986 + };
  987 + name = Profile;
  988 + };
  989 + 41CECE4F69E52DC021279D1426EE0E73 /* Release */ = {
  990 + isa = XCBuildConfiguration;
  991 + baseConfigurationReference = 560E985EE8E41A989444E6E21E8E0840 /* tpns_flutter_plugin.release.xcconfig */;
  992 + buildSettings = {
  993 + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
  994 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  995 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  996 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  997 + CURRENT_PROJECT_VERSION = 1;
  998 + DEFINES_MODULE = YES;
  999 + DYLIB_COMPATIBILITY_VERSION = 1;
  1000 + DYLIB_CURRENT_VERSION = 1;
  1001 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  1002 + ENABLE_BITCODE = NO;
  1003 + ENABLE_MODULE_VERIFIER = NO;
  1004 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  1005 + "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
  1006 + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
  1007 + "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
  1008 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
  1009 + "$(inherited)",
  1010 + );
  1011 + "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
  1012 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
  1013 + "$(inherited)",
  1014 + );
  1015 + GCC_PREFIX_HEADER = "Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-prefix.pch";
  1016 + GENERATE_INFOPLIST_FILE = NO;
  1017 + INFOPLIST_FILE = "Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin-Info.plist";
  1018 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  1019 + LD_RUNPATH_SEARCH_PATHS = (
  1020 + "$(inherited)",
  1021 + "@executable_path/Frameworks",
  1022 + "@loader_path/Frameworks",
  1023 + );
  1024 + MACH_O_TYPE = staticlib;
  1025 + MODULEMAP_FILE = "Target Support Files/tpns_flutter_plugin/tpns_flutter_plugin.modulemap";
  1026 + OTHER_LDFLAGS = (
  1027 + "$(inherited)",
  1028 + "-framework",
  1029 + Flutter,
  1030 + );
  1031 + PRODUCT_MODULE_NAME = tpns_flutter_plugin;
  1032 + PRODUCT_NAME = tpns_flutter_plugin;
  1033 + SDKROOT = iphoneos;
  1034 + SKIP_INSTALL = YES;
  1035 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
  1036 + SWIFT_INSTALL_OBJC_HEADER = YES;
  1037 + SWIFT_VERSION = 5.0;
  1038 + TARGETED_DEVICE_FAMILY = "1,2";
  1039 + VALIDATE_PRODUCT = YES;
  1040 + "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
  1041 + VERSIONING_SYSTEM = "apple-generic";
  1042 + VERSION_INFO_PREFIX = "";
  1043 + };
  1044 + name = Release;
  1045 + };
  1046 + 41D5B72325FFBA30D764726FBE5BC83D /* Release */ = {
  1047 + isa = XCBuildConfiguration;
  1048 + baseConfigurationReference = 7637851C2493673EC7CF4E26FC451A28 /* TPNS-iOS.release.xcconfig */;
  1049 + buildSettings = {
  1050 + CODE_SIGNING_ALLOWED = NO;
  1051 + CODE_SIGNING_IDENTITY = "-";
  1052 + CODE_SIGNING_REQUIRED = NO;
  1053 + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/TPNS-iOS";
  1054 + EXPANDED_CODE_SIGN_IDENTITY = "-";
  1055 + IBSC_MODULE = TPNS_iOS;
  1056 + INFOPLIST_FILE = "Target Support Files/TPNS-iOS/ResourceBundle-TPNS-iOS-Privacy-TPNS-iOS-Info.plist";
  1057 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
  1058 + PRODUCT_NAME = "TPNS-iOS-Privacy";
  1059 + SDKROOT = iphoneos;
  1060 + SKIP_INSTALL = YES;
  1061 + TARGETED_DEVICE_FAMILY = "1,2";
  1062 + WRAPPER_EXTENSION = bundle;
  1063 + };
  1064 + name = Release;
  1065 + };
  1066 + 5AF1AC88E5F655C93D1E3B5012F6FDC8 /* Profile */ = {
  1067 + isa = XCBuildConfiguration;
  1068 + buildSettings = {
  1069 + ALWAYS_SEARCH_USER_PATHS = NO;
  1070 + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
  1071 + CLANG_ANALYZER_NONNULL = YES;
  1072 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  1073 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  1074 + CLANG_CXX_LIBRARY = "libc++";
  1075 + CLANG_ENABLE_MODULES = YES;
  1076 + CLANG_ENABLE_OBJC_ARC = YES;
  1077 + CLANG_ENABLE_OBJC_WEAK = YES;
  1078 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  1079 + CLANG_WARN_BOOL_CONVERSION = YES;
  1080 + CLANG_WARN_COMMA = YES;
  1081 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  1082 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  1083 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  1084 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  1085 + CLANG_WARN_EMPTY_BODY = YES;
  1086 + CLANG_WARN_ENUM_CONVERSION = YES;
  1087 + CLANG_WARN_INFINITE_RECURSION = YES;
  1088 + CLANG_WARN_INT_CONVERSION = YES;
  1089 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  1090 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  1091 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  1092 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  1093 + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
  1094 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  1095 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  1096 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  1097 + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
  1098 + CLANG_WARN_UNREACHABLE_CODE = YES;
  1099 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  1100 + COPY_PHASE_STRIP = NO;
  1101 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  1102 + ENABLE_NS_ASSERTIONS = NO;
  1103 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  1104 + GCC_C_LANGUAGE_STANDARD = gnu11;
  1105 + GCC_NO_COMMON_BLOCKS = YES;
  1106 + GCC_PREPROCESSOR_DEFINITIONS = (
  1107 + "POD_CONFIGURATION_PROFILE=1",
  1108 + "$(inherited)",
  1109 + );
  1110 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  1111 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  1112 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  1113 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  1114 + GCC_WARN_UNUSED_FUNCTION = YES;
  1115 + GCC_WARN_UNUSED_VARIABLE = YES;
  1116 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  1117 + MTL_ENABLE_DEBUG_INFO = NO;
  1118 + MTL_FAST_MATH = YES;
  1119 + PRODUCT_NAME = "$(TARGET_NAME)";
  1120 + STRIP_INSTALLED_PRODUCT = NO;
  1121 + SWIFT_COMPILATION_MODE = wholemodule;
  1122 + SWIFT_OPTIMIZATION_LEVEL = "-O";
  1123 + SWIFT_VERSION = 5.0;
  1124 + SYMROOT = "${SRCROOT}/../build";
  1125 + };
  1126 + name = Profile;
  1127 + };
  1128 + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */ = {
  1129 + isa = XCBuildConfiguration;
  1130 + buildSettings = {
  1131 + ALWAYS_SEARCH_USER_PATHS = NO;
  1132 + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
  1133 + CLANG_ANALYZER_NONNULL = YES;
  1134 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  1135 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  1136 + CLANG_CXX_LIBRARY = "libc++";
  1137 + CLANG_ENABLE_MODULES = YES;
  1138 + CLANG_ENABLE_OBJC_ARC = YES;
  1139 + CLANG_ENABLE_OBJC_WEAK = YES;
  1140 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  1141 + CLANG_WARN_BOOL_CONVERSION = YES;
  1142 + CLANG_WARN_COMMA = YES;
  1143 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  1144 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  1145 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  1146 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  1147 + CLANG_WARN_EMPTY_BODY = YES;
  1148 + CLANG_WARN_ENUM_CONVERSION = YES;
  1149 + CLANG_WARN_INFINITE_RECURSION = YES;
  1150 + CLANG_WARN_INT_CONVERSION = YES;
  1151 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  1152 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  1153 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  1154 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  1155 + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
  1156 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  1157 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  1158 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  1159 + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
  1160 + CLANG_WARN_UNREACHABLE_CODE = YES;
  1161 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  1162 + COPY_PHASE_STRIP = NO;
  1163 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  1164 + ENABLE_NS_ASSERTIONS = NO;
  1165 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  1166 + GCC_C_LANGUAGE_STANDARD = gnu11;
  1167 + GCC_NO_COMMON_BLOCKS = YES;
  1168 + GCC_PREPROCESSOR_DEFINITIONS = (
  1169 + "POD_CONFIGURATION_RELEASE=1",
  1170 + "$(inherited)",
  1171 + );
  1172 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  1173 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  1174 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  1175 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  1176 + GCC_WARN_UNUSED_FUNCTION = YES;
  1177 + GCC_WARN_UNUSED_VARIABLE = YES;
  1178 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  1179 + MTL_ENABLE_DEBUG_INFO = NO;
  1180 + MTL_FAST_MATH = YES;
  1181 + PRODUCT_NAME = "$(TARGET_NAME)";
  1182 + STRIP_INSTALLED_PRODUCT = NO;
  1183 + SWIFT_COMPILATION_MODE = wholemodule;
  1184 + SWIFT_OPTIMIZATION_LEVEL = "-O";
  1185 + SWIFT_VERSION = 5.0;
  1186 + SYMROOT = "${SRCROOT}/../build";
  1187 + };
  1188 + name = Release;
  1189 + };
  1190 + 70F1E3D053D812E3D7E8E74934CC9053 /* Debug */ = {
  1191 + isa = XCBuildConfiguration;
  1192 + baseConfigurationReference = 9EB1587B06C67E684BAD1645588CEFEF /* Flutter.debug.xcconfig */;
  1193 + buildSettings = {
  1194 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  1195 + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
  1196 + CLANG_ENABLE_OBJC_WEAK = NO;
  1197 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  1198 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  1199 + LD_RUNPATH_SEARCH_PATHS = (
  1200 + "$(inherited)",
  1201 + "@executable_path/Frameworks",
  1202 + );
  1203 + ONLY_ACTIVE_ARCH = NO;
  1204 + SDKROOT = iphoneos;
  1205 + TARGETED_DEVICE_FAMILY = "1,2";
  1206 + };
  1207 + name = Debug;
  1208 + };
  1209 + 76E053E47C7357CFF4EA96DF8337031F /* Profile */ = {
  1210 + isa = XCBuildConfiguration;
  1211 + baseConfigurationReference = 1246F3BC7472A5A0F612B765EBC1AE53 /* Flutter.release.xcconfig */;
  1212 + buildSettings = {
  1213 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  1214 + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
  1215 + CLANG_ENABLE_OBJC_WEAK = NO;
  1216 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  1217 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  1218 + LD_RUNPATH_SEARCH_PATHS = (
  1219 + "$(inherited)",
  1220 + "@executable_path/Frameworks",
  1221 + );
  1222 + SDKROOT = iphoneos;
  1223 + TARGETED_DEVICE_FAMILY = "1,2";
  1224 + VALIDATE_PRODUCT = YES;
  1225 + };
  1226 + name = Profile;
  1227 + };
  1228 + 8AF9175EC5E78703CFD1988BB36D863D /* Release */ = {
  1229 + isa = XCBuildConfiguration;
  1230 + baseConfigurationReference = 7637851C2493673EC7CF4E26FC451A28 /* TPNS-iOS.release.xcconfig */;
  1231 + buildSettings = {
  1232 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  1233 + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
  1234 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  1235 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
  1236 + LD_RUNPATH_SEARCH_PATHS = (
  1237 + "$(inherited)",
  1238 + "@executable_path/Frameworks",
  1239 + );
  1240 + SDKROOT = iphoneos;
  1241 + TARGETED_DEVICE_FAMILY = "1,2";
  1242 + VALIDATE_PRODUCT = YES;
  1243 + };
  1244 + name = Release;
  1245 + };
  1246 + 8D3F4EAF613A47041A9D5502505BD818 /* Profile */ = {
  1247 + isa = XCBuildConfiguration;
  1248 + baseConfigurationReference = 7637851C2493673EC7CF4E26FC451A28 /* TPNS-iOS.release.xcconfig */;
  1249 + buildSettings = {
  1250 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  1251 + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
  1252 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  1253 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
  1254 + LD_RUNPATH_SEARCH_PATHS = (
  1255 + "$(inherited)",
  1256 + "@executable_path/Frameworks",
  1257 + );
  1258 + SDKROOT = iphoneos;
  1259 + TARGETED_DEVICE_FAMILY = "1,2";
  1260 + VALIDATE_PRODUCT = YES;
  1261 + };
  1262 + name = Profile;
  1263 + };
  1264 + E456C09D0851DE90F7AD403CD6694340 /* Debug */ = {
  1265 + isa = XCBuildConfiguration;
  1266 + baseConfigurationReference = 6696DA048BA8D0F7EF9587343AA80E22 /* Pods-Runner.debug.xcconfig */;
  1267 + buildSettings = {
  1268 + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
  1269 + CLANG_ENABLE_OBJC_WEAK = NO;
  1270 + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
  1271 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  1272 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  1273 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  1274 + CURRENT_PROJECT_VERSION = 1;
  1275 + DEFINES_MODULE = YES;
  1276 + DYLIB_COMPATIBILITY_VERSION = 1;
  1277 + DYLIB_CURRENT_VERSION = 1;
  1278 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  1279 + ENABLE_BITCODE = NO;
  1280 + ENABLE_MODULE_VERIFIER = NO;
  1281 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  1282 + "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
  1283 + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
  1284 + "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
  1285 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64\"",
  1286 + "$(inherited)",
  1287 + );
  1288 + "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
  1289 + "\"/Users/wangdongni/fvm/versions/custom_3.32.4-ohos-0.0.1/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
  1290 + "$(inherited)",
  1291 + );
  1292 + INFOPLIST_FILE = "Target Support Files/Pods-Runner/Pods-Runner-Info.plist";
  1293 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  1294 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  1295 + LD_RUNPATH_SEARCH_PATHS = (
  1296 + "$(inherited)",
  1297 + "@executable_path/Frameworks",
  1298 + "@loader_path/Frameworks",
  1299 + );
  1300 + MACH_O_TYPE = staticlib;
  1301 + MODULEMAP_FILE = "Target Support Files/Pods-Runner/Pods-Runner.modulemap";
  1302 + ONLY_ACTIVE_ARCH = NO;
  1303 + OTHER_LDFLAGS = (
  1304 + "$(inherited)",
  1305 + "-framework",
  1306 + Flutter,
  1307 + );
  1308 + OTHER_LIBTOOLFLAGS = "";
  1309 + PODS_ROOT = "$(SRCROOT)";
  1310 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
  1311 + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
  1312 + SDKROOT = iphoneos;
  1313 + SKIP_INSTALL = YES;
  1314 + TARGETED_DEVICE_FAMILY = "1,2";
  1315 + "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
  1316 + VERSIONING_SYSTEM = "apple-generic";
  1317 + VERSION_INFO_PREFIX = "";
  1318 + };
  1319 + name = Debug;
  1320 + };
  1321 + FB4B781D3E4B2E85C6448C7B77E40A53 /* Release */ = {
  1322 + isa = XCBuildConfiguration;
  1323 + baseConfigurationReference = 1246F3BC7472A5A0F612B765EBC1AE53 /* Flutter.release.xcconfig */;
  1324 + buildSettings = {
  1325 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  1326 + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
  1327 + CLANG_ENABLE_OBJC_WEAK = NO;
  1328 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  1329 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  1330 + LD_RUNPATH_SEARCH_PATHS = (
  1331 + "$(inherited)",
  1332 + "@executable_path/Frameworks",
  1333 + );
  1334 + SDKROOT = iphoneos;
  1335 + TARGETED_DEVICE_FAMILY = "1,2";
  1336 + VALIDATE_PRODUCT = YES;
  1337 + };
  1338 + name = Release;
  1339 + };
  1340 +/* End XCBuildConfiguration section */
  1341 +
  1342 +/* Begin XCConfigurationList section */
  1343 + 0C0CC3CF0A5CAC46C676F2C8D554867B /* Build configuration list for PBXNativeTarget "tpns_flutter_plugin" */ = {
  1344 + isa = XCConfigurationList;
  1345 + buildConfigurations = (
  1346 + 02D6CFE0C1F33B4F137C8B963A98BC19 /* Debug */,
  1347 + 3E15765C7204CAA3AD15867283B32A69 /* Profile */,
  1348 + 41CECE4F69E52DC021279D1426EE0E73 /* Release */,
  1349 + );
  1350 + defaultConfigurationIsVisible = 0;
  1351 + defaultConfigurationName = Release;
  1352 + };
  1353 + 1321C0A40D4B452AA509A3DC919F7D9E /* Build configuration list for PBXNativeTarget "TPNS-iOS-TPNS-iOS-Privacy" */ = {
  1354 + isa = XCConfigurationList;
  1355 + buildConfigurations = (
  1356 + 1ED0E16DFC7967E6EC9E726E17CD3CFE /* Debug */,
  1357 + 042D0DC2C49052B4D664F37DBB077B4F /* Profile */,
  1358 + 41D5B72325FFBA30D764726FBE5BC83D /* Release */,
  1359 + );
  1360 + defaultConfigurationIsVisible = 0;
  1361 + defaultConfigurationName = Release;
  1362 + };
  1363 + 240479E6F4CDDD946D8E62C00FA210E3 /* Build configuration list for PBXNativeTarget "Pods-Runner" */ = {
  1364 + isa = XCConfigurationList;
  1365 + buildConfigurations = (
  1366 + E456C09D0851DE90F7AD403CD6694340 /* Debug */,
  1367 + 0CFFCC29B035AA1C900AD2371AA350B6 /* Profile */,
  1368 + 045E947792E89940432E94F5E6A5DBED /* Release */,
  1369 + );
  1370 + defaultConfigurationIsVisible = 0;
  1371 + defaultConfigurationName = Release;
  1372 + };
  1373 + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
  1374 + isa = XCConfigurationList;
  1375 + buildConfigurations = (
  1376 + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */,
  1377 + 5AF1AC88E5F655C93D1E3B5012F6FDC8 /* Profile */,
  1378 + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */,
  1379 + );
  1380 + defaultConfigurationIsVisible = 0;
  1381 + defaultConfigurationName = Release;
  1382 + };
  1383 + 94078A06C17E946ADC1F2C06726219E5 /* Build configuration list for PBXAggregateTarget "Flutter" */ = {
  1384 + isa = XCConfigurationList;
  1385 + buildConfigurations = (
  1386 + 70F1E3D053D812E3D7E8E74934CC9053 /* Debug */,
  1387 + 76E053E47C7357CFF4EA96DF8337031F /* Profile */,
  1388 + FB4B781D3E4B2E85C6448C7B77E40A53 /* Release */,
  1389 + );
  1390 + defaultConfigurationIsVisible = 0;
  1391 + defaultConfigurationName = Release;
  1392 + };
  1393 + 99998805C635D0392567EC9BE18D6853 /* Build configuration list for PBXAggregateTarget "TPNS-iOS" */ = {
  1394 + isa = XCConfigurationList;
  1395 + buildConfigurations = (
  1396 + 1807ED7972F5660DA45DC864522CF58E /* Debug */,
  1397 + 8D3F4EAF613A47041A9D5502505BD818 /* Profile */,
  1398 + 8AF9175EC5E78703CFD1988BB36D863D /* Release */,
  1399 + );
  1400 + defaultConfigurationIsVisible = 0;
  1401 + defaultConfigurationName = Release;
  1402 + };
  1403 +/* End XCConfigurationList section */
  1404 + };
  1405 + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  1406 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1600"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "1EFDDC32A34D56D411E640A81DCD9E73"
  18 + BuildableName = "Flutter"
  19 + BlueprintName = "Flutter"
  20 + ReferencedContainer = "container:Pods.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + </Testables>
  32 + </TestAction>
  33 + <LaunchAction
  34 + buildConfiguration = "Debug"
  35 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  36 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  37 + launchStyle = "0"
  38 + useCustomWorkingDirectory = "NO"
  39 + ignoresPersistentStateOnLaunch = "NO"
  40 + debugDocumentVersioning = "YES"
  41 + debugServiceExtension = "internal"
  42 + allowLocationSimulation = "YES">
  43 + </LaunchAction>
  44 + <ProfileAction
  45 + buildConfiguration = "Release"
  46 + shouldUseLaunchSchemeArgsEnv = "YES"
  47 + savedToolIdentifier = ""
  48 + useCustomWorkingDirectory = "NO"
  49 + debugDocumentVersioning = "YES">
  50 + </ProfileAction>
  51 + <AnalyzeAction
  52 + buildConfiguration = "Debug">
  53 + </AnalyzeAction>
  54 + <ArchiveAction
  55 + buildConfiguration = "Release"
  56 + revealArchiveInOrganizer = "YES">
  57 + </ArchiveAction>
  58 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1600"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "8B74B458B450D74B75744B87BD747314"
  18 + BuildableName = "Pods_Runner.framework"
  19 + BlueprintName = "Pods-Runner"
  20 + ReferencedContainer = "container:Pods.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + </Testables>
  32 + </TestAction>
  33 + <LaunchAction
  34 + buildConfiguration = "Debug"
  35 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  36 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  37 + launchStyle = "0"
  38 + useCustomWorkingDirectory = "NO"
  39 + ignoresPersistentStateOnLaunch = "NO"
  40 + debugDocumentVersioning = "YES"
  41 + debugServiceExtension = "internal"
  42 + allowLocationSimulation = "YES">
  43 + </LaunchAction>
  44 + <ProfileAction
  45 + buildConfiguration = "Release"
  46 + shouldUseLaunchSchemeArgsEnv = "YES"
  47 + savedToolIdentifier = ""
  48 + useCustomWorkingDirectory = "NO"
  49 + debugDocumentVersioning = "YES">
  50 + </ProfileAction>
  51 + <AnalyzeAction
  52 + buildConfiguration = "Debug">
  53 + </AnalyzeAction>
  54 + <ArchiveAction
  55 + buildConfiguration = "Release"
  56 + revealArchiveInOrganizer = "YES">
  57 + </ArchiveAction>
  58 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1600"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "429EB5B6EB47BE9F4213CA909A199201"
  18 + BuildableName = "TPNS-iOS-Privacy.bundle"
  19 + BlueprintName = "TPNS-iOS-TPNS-iOS-Privacy"
  20 + ReferencedContainer = "container:Pods.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + </Testables>
  32 + </TestAction>
  33 + <LaunchAction
  34 + buildConfiguration = "Debug"
  35 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  36 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  37 + launchStyle = "0"
  38 + useCustomWorkingDirectory = "NO"
  39 + ignoresPersistentStateOnLaunch = "NO"
  40 + debugDocumentVersioning = "YES"
  41 + debugServiceExtension = "internal"
  42 + allowLocationSimulation = "YES">
  43 + </LaunchAction>
  44 + <ProfileAction
  45 + buildConfiguration = "Release"
  46 + shouldUseLaunchSchemeArgsEnv = "YES"
  47 + savedToolIdentifier = ""
  48 + useCustomWorkingDirectory = "NO"
  49 + debugDocumentVersioning = "YES">
  50 + </ProfileAction>
  51 + <AnalyzeAction
  52 + buildConfiguration = "Debug">
  53 + </AnalyzeAction>
  54 + <ArchiveAction
  55 + buildConfiguration = "Release"
  56 + revealArchiveInOrganizer = "YES">
  57 + </ArchiveAction>
  58 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1600"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "E819DAFD9B8C0DA4E037009DE8EF9900"
  18 + BuildableName = "TPNS-iOS"
  19 + BlueprintName = "TPNS-iOS"
  20 + ReferencedContainer = "container:Pods.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + </Testables>
  32 + </TestAction>
  33 + <LaunchAction
  34 + buildConfiguration = "Debug"
  35 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  36 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  37 + launchStyle = "0"
  38 + useCustomWorkingDirectory = "NO"
  39 + ignoresPersistentStateOnLaunch = "NO"
  40 + debugDocumentVersioning = "YES"
  41 + debugServiceExtension = "internal"
  42 + allowLocationSimulation = "YES">
  43 + </LaunchAction>
  44 + <ProfileAction
  45 + buildConfiguration = "Release"
  46 + shouldUseLaunchSchemeArgsEnv = "YES"
  47 + savedToolIdentifier = ""
  48 + useCustomWorkingDirectory = "NO"
  49 + debugDocumentVersioning = "YES">
  50 + </ProfileAction>
  51 + <AnalyzeAction
  52 + buildConfiguration = "Debug">
  53 + </AnalyzeAction>
  54 + <ArchiveAction
  55 + buildConfiguration = "Release"
  56 + revealArchiveInOrganizer = "YES">
  57 + </ArchiveAction>
  58 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1600"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "3F4F25993703000226A9174AF7BB3A43"
  18 + BuildableName = "tpns_flutter_plugin.framework"
  19 + BlueprintName = "tpns_flutter_plugin"
  20 + ReferencedContainer = "container:Pods.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + </Testables>
  32 + </TestAction>
  33 + <LaunchAction
  34 + buildConfiguration = "Debug"
  35 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  36 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  37 + launchStyle = "0"
  38 + useCustomWorkingDirectory = "NO"
  39 + ignoresPersistentStateOnLaunch = "NO"
  40 + debugDocumentVersioning = "YES"
  41 + debugServiceExtension = "internal"
  42 + allowLocationSimulation = "YES">
  43 + </LaunchAction>
  44 + <ProfileAction
  45 + buildConfiguration = "Release"
  46 + shouldUseLaunchSchemeArgsEnv = "YES"
  47 + savedToolIdentifier = ""
  48 + useCustomWorkingDirectory = "NO"
  49 + debugDocumentVersioning = "YES">
  50 + </ProfileAction>
  51 + <AnalyzeAction
  52 + buildConfiguration = "Debug">
  53 + </AnalyzeAction>
  54 + <ArchiveAction
  55 + buildConfiguration = "Release"
  56 + revealArchiveInOrganizer = "YES">
  57 + </ArchiveAction>
  58 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>SchemeUserState</key>
  6 + <dict>
  7 + <key>Flutter.xcscheme</key>
  8 + <dict>
  9 + <key>isShown</key>
  10 + <false/>
  11 + </dict>
  12 + <key>Pods-Runner.xcscheme</key>
  13 + <dict>
  14 + <key>isShown</key>
  15 + <false/>
  16 + </dict>
  17 + <key>TPNS-iOS-TPNS-iOS-Privacy.xcscheme</key>
  18 + <dict>
  19 + <key>isShown</key>
  20 + <false/>
  21 + </dict>
  22 + <key>TPNS-iOS.xcscheme</key>
  23 + <dict>
  24 + <key>isShown</key>
  25 + <false/>
  26 + </dict>
  27 + <key>tpns_flutter_plugin.xcscheme</key>
  28 + <dict>
  29 + <key>isShown</key>
  30 + <false/>
  31 + </dict>
  32 + </dict>
  33 + <key>SuppressBuildableAutocreation</key>
  34 + <dict/>
  35 +</dict>
  36 +</plist>
  1 +MIT License
  2 +
  3 +Copyright (c) 2020 腾讯移动推送
  4 +
  5 +Permission is hereby granted, free of charge, to any person obtaining a copy
  6 +of this software and associated documentation files (the "Software"), to deal
  7 +in the Software without restriction, including without limitation the rights
  8 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9 +copies of the Software, and to permit persons to whom the Software is
  10 +furnished to do so, subject to the following conditions:
  11 +
  12 +The above copyright notice and this permission notice shall be included in all
  13 +copies or substantial portions of the Software.
  14 +
  15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  21 +SOFTWARE.
  1 +TPNS iOS SDK ReleaseNote
  2 +
  3 +版本 1.4.0.5
  4 +-------------------------------------------
  5 +1.优化:优化注册链路及定时器逻辑。
  6 +2.修复:修复已知问题。
  7 +
  8 +VERSION 1.4.0.5
  9 +-------------------------------------------
  10 +1.Optimization: Optimize registration link and timer logic.
  11 +2.Fix: Fixed known issues.
  12 +
  13 +版本 1.4.0.4
  14 +-------------------------------------------
  15 +1.新增:自建通道新增对relevanceScore字段的支持。
  16 +2.修复:修复已知问题。
  17 +
  18 +VERSION 1.4.0.4
  19 +-------------------------------------------
  20 +1.New: tpns channel add relevanceScore support.
  21 +2.Fix: Fixed known issues.
  22 +
  23 +版本 1.4.0.3
  24 +-------------------------------------------
  25 +1. 优化:优化极端场景下上报组件初始化失败的问题。
  26 +2. 修复:修复已知问题。
  27 +
  28 +VERSION 1.4.0.3
  29 +-------------------------------------------
  30 +1. Optimization: Optimize the problem of mta initialization failure in bad case.
  31 +2. Fix: Fixed known issues.
  32 +
  33 +版本 1.4.0.2
  34 +-------------------------------------------
  35 +1. 新增:注册流程支持业务侧自定义。
  36 +
  37 +VERSION 1.4.0.2
  38 +-------------------------------------------
  39 +1. New: The registration interface supports customization on the business side.
  40 +
  41 +版本 1.4.0.1
  42 +-------------------------------------------
  43 +1. 新增:xcframework新增隐私清单文件。
  44 +2. 优化:优化部分日志链路。
  45 +
  46 +VERSION 1.4.0.1
  47 +-------------------------------------------
  48 +1. New: xcframework add privacy file.
  49 +2. Optimization: Optimize some log links.
  50 +
  51 +版本 1.4.0.0
  52 +-------------------------------------------
  53 +1. 优化:缩短注册链路,提升注册成功率。
  54 +2. 优化:账号绑定接口添加短链策略。
  55 +3. 修复:修复已知问题。
  56 +
  57 +VERSION 1.4.0.0
  58 +-------------------------------------------
  59 +1. Optimization: Shorten register links and improve the register success rate.
  60 +2. Optimization: Account api add http strategy.
  61 +3. Fix: Fixed known issues.
  62 +
  63 +版本 1.3.9.8
  64 +-------------------------------------------
  65 +1. 新增:新增SDK渠道字段。
  66 +2. 修复:修复已知问题。
  67 +
  68 +VERSION 1.3.9.8
  69 +-------------------------------------------
  70 +1. New: Added the SDK channel field.
  71 +2. Fix: Fixed known issues.
  72 +
  73 +
  74 +版本 1.3.9.7
  75 +-------------------------------------------
  76 +1. 新增:新增xcframework库类型。
  77 +2. 优化:优化自建通道对新系统特性的支持。
  78 +3. 修复:修复已知问题。
  79 +
  80 +VERSION 1.3.9.7
  81 +-------------------------------------------
  82 +1. New: Added xcframework library types.
  83 +2. Optimization: Optimize the support of tpns channels for new system features.
  84 +3. Fix: Fixed known issues.
  85 +
  86 +
  87 +版本 1.3.9.6
  88 +-------------------------------------------
  89 +1. 修复:修复手机型号多次采集的潜在风险。
  90 +2. 优化:优化头部卡顿问题。
  91 +
  92 +VERSION 1.3.9.6
  93 +-------------------------------------------
  94 +1. Fix: Fixed potential risk of multiple phone model collection.
  95 +2. Optimization: Optimized the head anr problem.
  96 +
  97 +版本 1.3.9.5
  98 +-------------------------------------------
  99 +1. 修复:修复已知问题。
  100 +2. 新增:新增实时活动接口。
  101 +
  102 +VERSION 1.3.9.5
  103 +-------------------------------------------
  104 +1. Fix: Fixed known issues.
  105 +2. New: Added a interface for live activity.
  106 +
  107 +
  108 +版本 1.3.9.4
  109 +-------------------------------------------
  110 +1. 修复:修复已知问题。
  111 +2. 新增:新增采集字段自定义接口。
  112 +
  113 +VERSION 1.3.9.4
  114 +-------------------------------------------
  115 +1. Fix: Fixed known issues.
  116 +2. New: Added a custom interface for collecting fields.
  117 +
  118 +版本 1.3.9.3
  119 +-------------------------------------------
  120 +1. 修复:修复已知问题。
  121 +
  122 +VERSION 1.3.9.3
  123 +-------------------------------------------
  124 +1. Fix: Fixed known issues.
  125 +
  126 +版本 1.3.9.2
  127 +-------------------------------------------
  128 +1. 修复:修复已知问题。
  129 +2. 优化:分离厂商通道和自建通道注册依赖,缩短注册流程。
  130 +
  131 +VERSION 1.3.9.2
  132 +-------------------------------------------
  133 +1. Fix: Fixed known issues.
  134 +2. Optimization: Separate the registration dependence between the apns channel and the tpns channel, shortening the registration process.
  135 +
  136 +版本 1.3.9.1
  137 +-------------------------------------------
  138 +1. 修复:修复已知问题。
  139 +2. 优化:替换上报域名,减少上报带宽消耗。
  140 +
  141 +VERSION 1.3.9.1
  142 +-------------------------------------------
  143 +1. Fix: Fixed known issues.
  144 +2. Optimization: Replace the reporting domain name to reduce the reporting bandwidth consumption.
  145 +
  146 +版本 1.3.9.0
  147 +-------------------------------------------
  148 +1. 修复已知问题。
  149 +2. 优化:提升业务接口性能。
  150 +
  151 +VERSION 1.3.9.0
  152 +-------------------------------------------
  153 +1. Fix: Fixed known issues.
  154 +2. Optimization: Improve performance for some API interface.
  155 +
  156 +版本 1.3.8.0
  157 +-------------------------------------------
  158 +1. 修复:修复了点击通知栏的自建通道消息,冷启动App,并且TPNS SDK延迟启动的情况下,偶现的上报点击事件失败的问题。
  159 +2. 优化:提升缓存文件IO性能。
  160 +3. 新增:新增VoIP能力(只支持海外用户)。
  161 +
  162 +VERSION 1.3.8.0
  163 +-------------------------------------------
  164 +1. Fix: Fixed the occasional failure to report click events when clicking the self-built channel message in the notification bar, cold-starting the app, and delaying the startup of the TPNS SDK.
  165 +2. Optimization: Improve IO performance for cache file.
  166 +3. New: Added VoIP capability (only supports overseas users).
  167 +
  168 +版本 1.3.7.0
  169 +-------------------------------------------
  170 +1. 优化:优化注册流程日志,方便问题排查。
  171 +2. 优化:优化抵达插件上报策略。
  172 +
  173 +VERSION 1.3.7.0
  174 +-------------------------------------------
  175 +1. Optimization: Optimize the registration process log to facilitate troubleshooting.
  176 +2. Optimization: Optimize the arrival plugin reporting strategy.
  177 +
  178 +版本 1.3.6.0
  179 +-------------------------------------------
  180 +1. 修复:修复冷启动模式下,SDK启动方法调用延后导致的点击数据无法上报问题。
  181 +2. 优化:更新数据上报策略,提升统计数据准确性。
  182 +3. 优化:优化SDK鉴权机制,提高安全性。
  183 +4. 增加:支持使用原生通知中心代理方法(UNUserNotificationCenterDelegate)。
  184 +
  185 +VERSION 1.3.6.0
  186 +-------------------------------------------
  187 +1. Fix: Fix the problem that click data cannot be reported due to delay in calling the SDK start method under cold start mode.
  188 +2. Optimization: Update the data reporting strategy to improve the accuracy of statistical data.
  189 +3. Optimization: Optimize the SDK authentication mechanism to improve security.
  190 +4. Added: Support the use of native UNUserNotificationCenterDelegate method.
  191 +
  192 +版本 1.3.5.0
  193 +-------------------------------------------
  194 +1. 优化:增加数据上报的超时时间,5s->15s。
  195 +2. 优化:优化了SDK的鉴权机制,提高了安全性。
  196 +
  197 +VERSION 1.3.5.0
  198 +-------------------------------------------
  199 +1. Optimization: Increase the timeout time of data reporting from 5s to15s.
  200 +2. Optimization: Optimize the authentication mechanism of SDK to improve security.
  201 +
  202 +版本 1.3.4.1
  203 +-------------------------------------------
  204 +1. 优化:提升了通知栏状态的准确性。
  205 +2. 增加:修改了应用内消息API接口
  206 +
  207 +VERSION 1.3.4.1
  208 +-------------------------------------------
  209 +1. Optimization:Improved the accuracy of notification bar status.
  210 +2. Added:Modified the in-app messaging API interface.
  211 +
  212 +版本 1.3.4.0
  213 +-------------------------------------------
  214 +1. 修复:修复了长链接多次重连后,网络连接偶尔失效的问题。
  215 +2. 修复:修复了App跳转导致TPNS在线状态偶尔不准确的问题。
  216 +3. 增加:增加了使用应用内消息作为补推的能力。
  217 +
  218 +VERSION 1.3.4.0
  219 +-------------------------------------------
  220 +1. Fix: Fixed an issue where network connections occasionally failed after tcp connecton was reconnected multiple times.
  221 +2. Fix: Fixed an issue where App deeplink caused TPNS online status to be occasionally inaccurate.
  222 +3. Added: Added ability to use in-app messages for push message.
  223 +
  224 +版本 1.3.3.0
  225 +-------------------------------------------
  226 +1. 修复:修复了集群切换没有实时生效的问题。
  227 +2. 修复:修复了tag接口频繁调用时,绑定不准确的问题。
  228 +3. 优化:升级 SDK deployment target 到 9.0。
  229 +4. 优化:提升了"账号绑定"和"注册回调"的性能。
  230 +5. 新增:新增了对RestApi的show_type字段的支持,app前台时可以不展示通知。
  231 +6. 新增:新增了长连接可支持SSL的能力。
  232 +7. 新增:对App启动类型,能区分是由"点击通知"拉起。
  233 +
  234 +版本 1.3.3.0
  235 +-------------------------------------------
  236 +1. Fix: Fixed issue the switch of cluster does not take effect in real time.
  237 +2. Fix: Fixed inaccurate binding issue when the API of tag is called frequently.
  238 +3. Optimization: Upgraded the SDK deployment target to 9.0.
  239 +4. Optimization: Improved The performance of "Account Binding" and "Registration Callback".
  240 +5. Added: Added show_type property in RestApi, which can make the app do not display notifications in the foreground.
  241 +6. Added: Added SSL support for TCP connection.
  242 +7. Added: Added "click on notification" enum for app startup type.
  243 +
  244 +版本 1.3.2.1
  245 +-------------------------------------------
  246 +1. 修复:Xcode 12.5下, 引用TPNSInAppMessage.framework的兼容性问题。
  247 +2. 修复:用户iCloud备份还原,两台设备具有同样TPNS Token问题。
  248 +3. 优化:切换了新集群环境的话,旧集群产生的日志不上报。
  249 +4. 增加:手机号码绑定接口,用于普通短信及智能短信发送。
  250 +5. 增加:账号绑定接口升级,新增多种预设账号类型。
  251 +6. 增加:Demo演示了"用户允许协议"后才进行Push通知弹窗的方法。
  252 +7. 增加:对startXGWithAccessID接口的错误调用,进行了日志提示。
  253 +8. 增加:对第三方SDK对appdelegate的hook冲突,进行了日志提示。
  254 +9. 删除:若干在生产环境下,不必要的日志提示。
  255 +
  256 +VERSION 1.3.2.1
  257 +-------------------------------------------
  258 +1. FIX: The compatibility issue of ‘TPNSInAppMessage.framework’ under Xcode 12.5
  259 +2. FIX: The same TPNS Token problem on two different devices when user backup and restore in iCloud.
  260 +3. IMPROVEMENT: The logs generated by the old cluster will not report after we switch to a new cluster environment.
  261 +4. NEW FEATURE: Mobile phone number binding interface for ordinary SMS and smart SMS send.
  262 +5. NEW FEATURE: Account binding interface upgrade, new multiple preset account types.
  263 +7. NEW FEATURE: The way to setup “pop-up Push notification window only after ‘User Allowed Agreement’ ” is demonstrated in demo app.
  264 +7. NEW FEATURE: Log prompts for wrong call of startXGWithAccessID interface.
  265 +8. NEW FEATURE: Log prompts for conflicts of AppDelegate hook between TPNS and the third-party SDK.
  266 +9. DELETED FEATURE: Unnecessary log prompts in the production environment.
  267 +
  268 +版本 1.3.1.1
  269 +-------------------------------------------
  270 +1. 修复:GCDAsync库可能导致的编译冲突。
  271 +
  272 +VERSION 1.3.1.1
  273 +-------------------------------------------
  274 +1. FIX:Possible compilation conflicts caused by the GCDAsync library.
  275 +
  276 +版本 1.3.1.0
  277 +-------------------------------------------
  278 +1. 修复:TPNS自建通道和APNs通道的播放声音规则不一致问题。
  279 +2. 修复:切换集群时,云控下发加密字段失效的问题。
  280 +3. 修复:偶现的统计日志上报失败问题。
  281 +4. 修复:覆盖消息功能,带thread-id的通知可能覆盖失败的问题。
  282 +5. 优化:部分错误日志的提示文案。
  283 +6. 优化:提高终端对TPNS Token的环境校验的准确性。
  284 +7. 优化:自动补发在TPNS网络连接失败时设置的角标数。
  285 +8. 优化:"静默消息"的抵达上报更及时。
  286 +9. 增加:查询标签功能。
  287 +10. 增加:申请通知权限的回调。
  288 +11. 增加:TPNS通道支持thread_id消息分组。
  289 +12. 增加:Demo新增全球集群切换的示例代码。
  290 +13. 增加:TPNS网络连接的建连成功和断开回调。
  291 +
  292 +VERSION 1.3.1.0
  293 +-------------------------------------------
  294 +1. FIX:Inconsistent rules of playing sound between TPNS channel and APNs channel.
  295 +2. FIX:Invalid Encrypted Info delivered by Cloud Control when we change cluster.
  296 +3. FIX:Occasional statistical log report failure problem.
  297 +4. FIX:Override message function, notification with thread-id may override failed issue.
  298 +5. IMPROVEMENT:Some error log tips.
  299 +6. IMPROVEMENT:Check TPNS Token environment more accurately
  300 +7. IMPROVEMENT:Automatically resend the badge number failed to set that caused by TPNS network issues.
  301 +8. IMPROVEMENT:The arrival of "silent push notification" is reported more promptly
  302 +9. NEW FEATURE:Query tags.
  303 +10. NEW FEATURE:Callback for request notification permission.
  304 +11. NEW FEATURE:TPNS channel supports thread_id message grouping.
  305 +12. NEW FEATURE:Add sample code for global cluster switching in demo app.
  306 +13. NEW FEATURE:Connected and disconnected callbacks for TPNS network connections.
  307 +
  308 +版本 1.3.0.0
  309 +-------------------------------------------
  310 +1. 修复:多线程时和低内存下的小概率crash的问题
  311 +2. 优化:减少不必要的MQTT网络超时检测
  312 +3. 优化:"抵达"的上报支持更高性能的方式
  313 +4. 优化:减少"应用内消息"插件包体积
  314 +5. 优化:对获取TPNS token的请求进行加密
  315 +6. 增加:账号、标签、用户属性接口的参数检查逻辑和错误回调
  316 +7. 删除:账号类型枚举,由业务自己定义
  317 +
  318 +VERSION 1.3.0.0
  319 +-------------------------------------------
  320 +1. FIX:Small probability of crash under multithreading or low memory
  321 +2. IMPROVEMENT:Reduce the count of detection for unnecessary MQTT network timeout
  322 +3. IMPROVEMENT:Take a higher performance approach for the "arrival" report
  323 +4. IMPROVEMENT:Reduce the size of the "In-App Messaging" plugin package
  324 +5. IMPROVEMENT:Encrypt the request to obtain TPNS token
  325 +6. NEW FEATURE:Add parameter check logic and error callback for account, tag, and user-attribute interfaces
  326 +7. DELETED FEATURE:Delete account type enumeration, let the business define itself
  327 +
  328 +版本 1.2.9.0
  329 +-------------------------------------------
  330 +1. 修复:富媒体通知可能下载图片失败的问题。
  331 +2. 修复:在App后台时,TPNS通道可能在线的问题。
  332 +3. 修复:1.2.5.2以前版本,可能出现TPNS token重复的问题。
  333 +4. 修复:可能建立长连接失败的问题。
  334 +5. 修复:"应用内消息"和个别SDK命名冲突的问题。
  335 +6. 优化:本地缓存的性能。
  336 +7. 优化:App通知开关状态的上报时机。
  337 +8. 优化:弱网下的长连接处理机制。
  338 +9. 优化:账号相关接口。
  339 +10. 优化:TPNS Demo的代码示例
  340 +11. 增加:本地通知功能。
  341 +12. 增加:对ipv6的支持。
  342 +13. 删除:对免费版的兼容代码。
  343 +
  344 +VERSION 1.2.9.0
  345 +-------------------------------------------
  346 +1. FIX:Rich media notification may fail to download pictures.
  347 +2. FIX:The TPNS channel may be online while the App is background.
  348 +3. FIX:If sdk version is less than 1.2.5.2, TPNS token duplication may occur.
  349 +4. FIX:It may fail to establish a long connection.
  350 +5. FIX:"In-Application Messages" and some individual SDK naming conflicts.
  351 +6. IMPROVEMENT:Local cache performance.
  352 +7. IMPROVEMENT:Reporting timing when app notification status switch.
  353 +8. IMPROVEMENT:Long connection processing mechanism in weak network.
  354 +9. IMPROVEMENT:Account related interface.
  355 +10. IMPROVEMENT:TPNS Demo's code example.
  356 +11. NEW FEATURE:Local notification function.
  357 +12. NEW FEATURE:Ipv6 support.
  358 +13. DELETED FEATURE: Compatible code for the XinGe's free version.
  359 +
  360 +VERSION 1.2.8.1
  361 +-------------------------------------------
  362 +1. 修复已知问题
  363 +
  364 +版本 1.2.8.1
  365 +-------------------------------------------
  366 +1. Fixed known issues
  367 +
  368 +VERSION 1.2.8.0
  369 +-------------------------------------------
  370 +1. Added "user attributes" for personalized push
  371 +2. Added "in-app messaging" , we provide several templates
  372 +3. Fixed known issues
  373 +
  374 +版本 1.2.8.0
  375 +-------------------------------------------
  376 +1. 新增「用户属性」相关接口,用于个性化推送
  377 +2. 新增「应用内消息」功能,以及若干应用内消息模板
  378 +3. 修复已知问题
  379 +
  380 +VERSION 1.2.7.2
  381 +-------------------------------------------
  382 +1. Added custom event reporting
  383 +2. Increased the success rate of reporting "arrivals"
  384 +3. Fixed known issues
  385 +
  386 +版本 1.2.7.2
  387 +-------------------------------------------
  388 +1. 增加自定义事件上报功能
  389 +2. 增加"抵达数"上报的成功率
  390 +3. 修复已知问题
  391 +
  392 +VERSION 1.2.7.1
  393 +-------------------------------------------
  394 +1. Reduced SDK startup time
  395 +2. Added new callback interface in case of registration failure
  396 +3. Optimized account and label interface
  397 +4. Fixed known issues
  398 +
  399 +版本 1.2.7.1
  400 +-------------------------------------------
  401 +1. 减少 SDK 启动耗时
  402 +2. 新增注册失败的回调接口
  403 +3. 优化账号、标签接口
  404 +4. 修复已知问题
  405 +
  406 +VERSION 1.2.6.1
  407 +-------------------------------------------
  408 +1. Improve stability, fix known issues caused by SDK
  409 +
  410 +版本 1.2.6.1
  411 +-------------------------------------------
  412 +1. 提升稳定性,修复已知问题
  413 +
  414 +VERSION 1.2.6.0
  415 +-------------------------------------------
  416 +1. Optimize access by adding a new registration callback
  417 +2. Added TPNS channel to send messages
  418 +3. Optimize data statistics
  419 +4. Fixed known issues
  420 +
  421 +版本 1.2.6.0
  422 +-------------------------------------------
  423 +1. 优化接入,新增注册回调方法
  424 +2. 新增自建通道,支持TPNS通道下发消息
  425 +3. 优化数据统计
  426 +4. 修复已知问题
  427 +
  428 +VERSION 1.2.5.4
  429 +-------------------------------------------
  430 +* Improve stability, fix known issues caused by SDK
  431 +
  432 +版本 1.2.5.4
  433 +-------------------------------------------
  434 +* 提升稳定性,修复已知问题
  435 +
  436 +VERSION 1.2.5.3
  437 +-------------------------------------------
  438 +* Support unregistration tokens for free clusters to prevent repeated pushes
  439 +* Support replacing duplicate messages in notification extensions
  440 +
  441 +版本 1.2.5.3
  442 +-------------------------------------------
  443 +* 支持对信鸽免费集群进行反注册token,防止重复推送
  444 +* 新增支持在通知扩展中对重复的消息进行替换
  445 +
  446 +
  447 +VERSION 1.2.5.2
  448 +-------------------------------------------
  449 +* Improve accurate push, add enumeration of account types
  450 +* Improve stability, optimize log IO exception and iOS10 receive message callback exception
  451 +
  452 +版本 1.2.5.2
  453 +-------------------------------------------
  454 +* 提升精准推送,新增账号类型的枚举
  455 +* 提升稳定性,优化日志IO异常和iOS10接收消息回调异常的问题
  456 +
  457 +
  458 +VERSION 1.2.5.1
  459 +-------------------------------------------
  460 +* Simplified SDK access, delete reporting API, SDK handles it automatically
  461 +* Improve stability, fix crash caused by SDK Cache
  462 +
  463 +版本 1.2.5.1
  464 +-------------------------------------------
  465 +* 简化接入,删除上报接口,SDK自动处理
  466 +* 提升稳定性,修复缓存模块引发的Crash问题
  467 +
  468 +
  469 +VERSION 1.2.4.9
  470 +-------------------------------------------
  471 +* Improve stability, fix crash caused by message statistics and a memory leak
  472 +* Optimize SDK compatibility
  473 +
  474 +版本 1.2.4.9
  475 +-------------------------------------------
  476 +* 提升稳定性,修复消息统计触发的崩溃问题和一处内存泄露问题
  477 +* 优化提升SDK兼容性
  478 +
  479 +VERSION 1.2.4.8
  480 +-------------------------------------------
  481 +* Improve stability, fix crash caused by message statistics
  482 +版本 1.2.4.8
  483 +-------------------------------------------
  484 +* 提升稳定性,修复消息统计触发的崩溃问题
  485 +
  486 +VERSION 1.2.4.7
  487 +-------------------------------------------
  488 +* Improve stability, fix crash caused by message statistics and log statistics
  489 +版本 1.2.4.7
  490 +-------------------------------------------
  491 +* 提升稳定性,修复消息统计和日志记录触发的崩溃问题
  492 +
  493 +
  494 +VERSION 1.2.4.6
  495 +-------------------------------------------
  496 +* Optimize SDK registration process and improve registration success rate
  497 +* Optimize rich media push, support resources without suffix
  498 +* Fix other known issues
  499 +
  500 +版本 1.2.4.6
  501 +-------------------------------------------
  502 +* 优化SDK注册流程,提升注册成功率
  503 +* 优化富媒体推送,支持无后缀名的资源
  504 +* 修复其他已知问题
  505 +
  506 +
  507 +VERSION 1.2.4.5
  508 +-------------------------------------------
  509 +* Add SDK crash monitor
  510 +* Optimize message arrival statistics
  511 +* Optimize device count statistics
  512 +* Optimize SDK I/O performance
  513 +* Optimize and improve SDK stability
  514 +
  515 +
  516 +版本 1.2.4.5
  517 +-------------------------------------------
  518 +* SDK增加Crash监控
  519 +* 优化抵达数据统计
  520 +* 优化累计设备量统计
  521 +* 优化SDK I/O性能
  522 +* 优化提升SDK稳定性
  523 +
  524 +
  525 +
  526 +VERSION 1.2.4.4
  527 +-------------------------------------------
  528 +* Optimize the SDK registration process and improve the reach of notification messages
  529 +
  530 +版本 1.2.4.4
  531 +-------------------------------------------
  532 +* 优化SDK注册流程,提升通知消息触达
  533 +
  534 +
  535 +VERSION 1.2.4.3
  536 +-------------------------------------------
  537 +* Optimize SDK compatibility
  538 +
  539 +版本 1.2.4.3
  540 +-------------------------------------------
  541 +* 优化提升SDK兼容性
  542 +
  543 +VERSION 1.2.4.2
  544 +-------------------------------------------
  545 +* fix a bug about obtaining the TPNS Token
  546 +
  547 +版本 1.2.4.2
  548 +-------------------------------------------
  549 +* 修复SDK获取TPNS Token的Bug
  550 +
  551 +VERSION 1.2.4.1
  552 +-------------------------------------------
  553 +* Add a log upload API
  554 +* Optimize and improve SDK stability
  555 +* Optimize SDK compatibility
  556 +
  557 +版本 1.2.4.1
  558 +-------------------------------------------
  559 +* 新增日志上传接口
  560 +* 优化提升SDK稳定性
  561 +* 优化提升SDK兼容性
  562 +
  563 +VERSION 1.2.4.0
  564 +-------------------------------------------
  565 +* Fix the problem of single account binding callback
  566 +* Improve SDK compatibility with third parties Notification Plugin
  567 +* Newly differentiated device push environment to optimize statistics
  568 +* Optimize the cache logic for replacing App information
  569 +* Improve SDK registration success rate
  570 +
  571 +
  572 +版本 1.2.4.0
  573 +-------------------------------------------
  574 +* 修复单账号绑定回调的问题
  575 +* 提升SDK与第三方的兼容性
  576 +* 新增区分设备推送环境,从而优化统计数据
  577 +* 优化更换App信息的缓存逻辑
  578 +* 提升SDK注册成功率
  579 +
  580 +VERSION 1.2.3.0
  581 +-------------------------------------------
  582 +* Fix a bug about DeviceToken changed
  583 +
  584 +版本 1.2.3.0
  585 +-------------------------------------------
  586 +* 修复一个当设备Token变化时出现的bug
  587 +
  588 +
  589 +VERSION 1.2.2.1
  590 +-------------------------------------------
  591 +* Fix a bug about network connecting when other apis are called before SDK starting
  592 +
  593 +版本 1.2.2.1
  594 +-------------------------------------------
  595 +* 修复一个当SDK未启动完成就调用其他接口而产生的网络连接的Bug
  596 +
  597 +
  598 +VERSION 1.2.2.0
  599 +-------------------------------------------
  600 +* Fix a bug about registering device to the TPNS server on iOS13
  601 +* Fix a bug about network connecting when the App status changed
  602 +
  603 +版本 1.2.2.0
  604 +-------------------------------------------
  605 +* 修复iOS13上无法注册的问题
  606 +* 修复App状态切换时的网络连接的问题
  607 +
  608 +
  609 +VERSION 1.2.1.2
  610 +-------------------------------------------
  611 +* Fix a bug about clicking message statistics
  612 +
  613 +版本 1.2.1.2
  614 +-------------------------------------------
  615 +* 修复点击数据统计bug
  616 +
  617 +
  618 +VERSION 1.2.1.1
  619 +-------------------------------------------
  620 +* 修复标签绑定接口在网络连接状态变化时存在的bug
  621 +
  622 +VERSION 1.2.1.0
  623 +-------------------------------------------
  624 +* 新增查询信鸽服务生成的Token接口
  625 +* 修复单账号绑定失败的问题
  626 +
  627 +VERSION 1.2.0.0
  628 +-------------------------------------------
  629 +* 新增独立上报数据SDK
  630 +* 优化终端注册服务
  631 +* 更新DeviceToken解析逻辑
  632 +
  633 +VERSION 1.1.0.1
  634 +-------------------------------------------
  635 +* 修复用户名和密码认证逻辑
  636 +* 修复动态加载SDK的缺陷
  637 +
  638 +VERSION 1.1.0.0
  639 +-------------------------------------------
  640 +* 增加PushKit插件
  641 +* 优化SDK启动耗时
  642 +
  643 +
  644 +VERSION 1.0.1.0
  645 +-------------------------------------------
  646 +* 增加长连接的推送
  647 +
  648 +
  649 + VERSION 1.0.1.0
  650 +-------------------------------------------
  651 +* 增加对PushKit的插件化支持,目前功能仅限注册,注销,上报
  652 +
  653 +
  654 + VERSION 1.0.0.0
  655 +-------------------------------------------
  656 +* 初始版本
  1 +//
  2 +// XGInAppMessage.h
  3 +// XGInAppMessage
  4 +//
  5 +// Created by rockzuo on 2020/8/17.
  6 +// Copyright © 2020 Tencent. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +
  11 +//! Project version number for XGInAppMessage.
  12 +FOUNDATION_EXPORT double XGInAppMessageVersionNumber;
  13 +
  14 +//! Project version string for XGInAppMessage.
  15 +FOUNDATION_EXPORT const unsigned char XGInAppMessageVersionString[];
  16 +
  17 +// In this header, you should import all the public headers of your framework using statements like #import <XGInAppMessage/PublicHeader.h>
  18 +
  19 +#import "XGInAppMessageManager.h"
  1 +//
  2 +// XGInAppMessageManager.h
  3 +// XGInAppMessage
  4 +//
  5 +// Created by rockzuo on 2020/8/17.
  6 +// Copyright © 2020 Tencent. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +#import <UIKit/UIKit.h>
  11 +
  12 +/// XGInAppMessageManager事件代理
  13 +@protocol XGInAppMessageActionDelegate <NSObject>
  14 +
  15 +@optional
  16 +/// 通过下发的自定义参数去做响应
  17 +/// @param actionDic 自定义事件字符串标识
  18 +- (void)onClickWithCustomAction:(nullable NSDictionary *)actionDic;
  19 +
  20 +@end
  21 +
  22 +/// 消息管理类
  23 +@interface XGInAppMessageManager : NSObject
  24 +
  25 +/// 开发者是否允许展示标识, 默认展示,如果您在某些场景不想展示应用内消息可将其置为YES
  26 +@property (assign, nonatomic) BOOL refuseMessage;
  27 +
  28 +/// 设置消息展示的window
  29 +@property (strong, nonatomic, nullable) UIWindow *targetWindow;
  30 +
  31 +/// 按钮事件响应代理
  32 +@property (weak, nonatomic, nullable) id<XGInAppMessageActionDelegate> actionDelegate;
  33 +
  34 +/// 设置消息轮询时间间隔,最小值为10s,此方法需要在单例初始化之前调用
  35 ++ (void)setMessageTimerInterval:(NSTimeInterval)interval;
  36 +
  37 +/// 单例方法
  38 ++ (nonnull instancetype)defaultManager;
  39 +
  40 +/// 展示自定义消息
  41 +/// @param messageInfo 应用内消息结构
  42 +- (void)presentCustomMessage:(nullable NSDictionary *)messageInfo;
  43 +
  44 +/// 关闭消息视图
  45 +- (void)dismissPopWindow;
  46 +
  47 +@end
  1 +framework module XGInAppMessage {
  2 + umbrella header "XGInAppMessage.h"
  3 +
  4 + export *
  5 + module * { export * }
  6 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>NSPrivacyTracking</key>
  6 + <false/>
  7 + <key>NSPrivacyTrackingDomains</key>
  8 + <array/>
  9 + <key>NSPrivacyCollectedDataTypes</key>
  10 + <array/>
  11 + <key>NSPrivacyAccessedAPITypes</key>
  12 + <array/>
  13 +</dict>
  14 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>files</key>
  6 + <dict>
  7 + <key>Headers/XGInAppMessage.h</key>
  8 + <data>
  9 + rn7g7+Cz+vQgMuOd0fpq5SOEM5s=
  10 + </data>
  11 + <key>Headers/XGInAppMessageManager.h</key>
  12 + <data>
  13 + JJns75ZOSiQmsZjYeHApGaU1ChI=
  14 + </data>
  15 + <key>Info.plist</key>
  16 + <data>
  17 + CwlfADL+IPRRd9xG2Ka1BNsinvs=
  18 + </data>
  19 + <key>Modules/module.modulemap</key>
  20 + <data>
  21 + YX6cVDR3GXUXKRXDCJdvtZmd9vU=
  22 + </data>
  23 + </dict>
  24 + <key>files2</key>
  25 + <dict>
  26 + <key>Headers/XGInAppMessage.h</key>
  27 + <dict>
  28 + <key>hash</key>
  29 + <data>
  30 + rn7g7+Cz+vQgMuOd0fpq5SOEM5s=
  31 + </data>
  32 + <key>hash2</key>
  33 + <data>
  34 + C5AsaOYS5Dt5I9FbBzyJ8ps1amf+ZYm4XpZKGZYrkic=
  35 + </data>
  36 + </dict>
  37 + <key>Headers/XGInAppMessageManager.h</key>
  38 + <dict>
  39 + <key>hash</key>
  40 + <data>
  41 + JJns75ZOSiQmsZjYeHApGaU1ChI=
  42 + </data>
  43 + <key>hash2</key>
  44 + <data>
  45 + fqTc3Ff6wka49RywA1gPsRmj00KrrS0yvOPUCZJJyDM=
  46 + </data>
  47 + </dict>
  48 + <key>Modules/module.modulemap</key>
  49 + <dict>
  50 + <key>hash</key>
  51 + <data>
  52 + YX6cVDR3GXUXKRXDCJdvtZmd9vU=
  53 + </data>
  54 + <key>hash2</key>
  55 + <data>
  56 + E6ikTRrZ2eY8SYyTfLlxr2ZXSAw6z6O4e6p7nDQwITY=
  57 + </data>
  58 + </dict>
  59 + </dict>
  60 + <key>rules</key>
  61 + <dict>
  62 + <key>^.*</key>
  63 + <true/>
  64 + <key>^.*\.lproj/</key>
  65 + <dict>
  66 + <key>optional</key>
  67 + <true/>
  68 + <key>weight</key>
  69 + <real>1000</real>
  70 + </dict>
  71 + <key>^.*\.lproj/locversion.plist$</key>
  72 + <dict>
  73 + <key>omit</key>
  74 + <true/>
  75 + <key>weight</key>
  76 + <real>1100</real>
  77 + </dict>
  78 + <key>^Base\.lproj/</key>
  79 + <dict>
  80 + <key>weight</key>
  81 + <real>1010</real>
  82 + </dict>
  83 + <key>^version.plist$</key>
  84 + <true/>
  85 + </dict>
  86 + <key>rules2</key>
  87 + <dict>
  88 + <key>.*\.dSYM($|/)</key>
  89 + <dict>
  90 + <key>weight</key>
  91 + <real>11</real>
  92 + </dict>
  93 + <key>^(.*/)?\.DS_Store$</key>
  94 + <dict>
  95 + <key>omit</key>
  96 + <true/>
  97 + <key>weight</key>
  98 + <real>2000</real>
  99 + </dict>
  100 + <key>^.*</key>
  101 + <true/>
  102 + <key>^.*\.lproj/</key>
  103 + <dict>
  104 + <key>optional</key>
  105 + <true/>
  106 + <key>weight</key>
  107 + <real>1000</real>
  108 + </dict>
  109 + <key>^.*\.lproj/locversion.plist$</key>
  110 + <dict>
  111 + <key>omit</key>
  112 + <true/>
  113 + <key>weight</key>
  114 + <real>1100</real>
  115 + </dict>
  116 + <key>^Base\.lproj/</key>
  117 + <dict>
  118 + <key>weight</key>
  119 + <real>1010</real>
  120 + </dict>
  121 + <key>^Info\.plist$</key>
  122 + <dict>
  123 + <key>omit</key>
  124 + <true/>
  125 + <key>weight</key>
  126 + <real>20</real>
  127 + </dict>
  128 + <key>^PkgInfo$</key>
  129 + <dict>
  130 + <key>omit</key>
  131 + <true/>
  132 + <key>weight</key>
  133 + <real>20</real>
  134 + </dict>
  135 + <key>^embedded\.provisionprofile$</key>
  136 + <dict>
  137 + <key>weight</key>
  138 + <real>20</real>
  139 + </dict>
  140 + <key>^version\.plist$</key>
  141 + <dict>
  142 + <key>weight</key>
  143 + <real>20</real>
  144 + </dict>
  145 + </dict>
  146 +</dict>
  147 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>NSPrivacyTracking</key>
  6 + <false/>
  7 + <key>NSPrivacyTrackingDomains</key>
  8 + <array/>
  9 + <key>NSPrivacyCollectedDataTypes</key>
  10 + <array>
  11 + <dict>
  12 + <key>NSPrivacyCollectedDataType</key>
  13 + <string>NSPrivacyCollectedDataTypeOtherDataTypes</string>
  14 + <key>NSPrivacyCollectedDataTypeLinked</key>
  15 + <false/>
  16 + <key>NSPrivacyCollectedDataTypeTracking</key>
  17 + <false/>
  18 + <key>NSPrivacyCollectedDataTypePurposes</key>
  19 + <array>
  20 + <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
  21 + </array>
  22 + </dict>
  23 + </array>
  24 + <key>NSPrivacyAccessedAPITypes</key>
  25 + <array>
  26 + <dict>
  27 + <key>NSPrivacyAccessedAPIType</key>
  28 + <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
  29 + <key>NSPrivacyAccessedAPITypeReasons</key>
  30 + <array>
  31 + <string>CA92.1</string>
  32 + </array>
  33 + </dict>
  34 + <dict>
  35 + <key>NSPrivacyAccessedAPIType</key>
  36 + <string>NSPrivacyAccessedAPICategoryDiskSpace</string>
  37 + <key>NSPrivacyAccessedAPITypeReasons</key>
  38 + <array>
  39 + <string>E174.1</string>
  40 + </array>
  41 + </dict>
  42 + <dict>
  43 + <key>NSPrivacyAccessedAPIType</key>
  44 + <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
  45 + <key>NSPrivacyAccessedAPITypeReasons</key>
  46 + <array>
  47 + <string>C617.1</string>
  48 + </array>
  49 + </dict>
  50 + </array>
  51 +</dict>
  52 +</plist>
  1 +//
  2 +// XGLocalNotification.h
  3 +// XG-SDK
  4 +//
  5 +// Created by rockzuo on 2020/10/27.
  6 +// Copyright © 2020 TEG of Tencent. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +
  11 +/// 通知内容类
  12 +@interface XGNotificationContent : NSObject <NSCopying>
  13 +
  14 +/// 通知标题
  15 +@property (nonatomic, copy) NSString *title;
  16 +/// 通知副标题
  17 +@property (nonatomic, copy) NSString *subtitle;
  18 +/// 通知内容
  19 +@property (nonatomic, copy) NSString *body;
  20 +/// 通知角标,不需要修改则不传
  21 +@property (nonatomic, copy) NSNumber *badge;
  22 +/// 自定义弹框按钮显示的内容
  23 +@property (nonatomic, copy) NSString *action NS_DEPRECATED_IOS(8_0, 10_0);
  24 +/// 分类标识
  25 +@property (nonatomic, copy) NSString *categoryIdentifier;
  26 +/// 本地推送时可以通过userInfo设置附加信息
  27 +@property (nonatomic, copy) NSDictionary *userInfo;
  28 +/// 收到通知提示音,不设置则为默认声音(您可以本地使用一段声音,创建本地通知时指定此声音)
  29 +@property (nonatomic, copy) NSString *sound;
  30 +/// 图片、音视频富媒体元素url地址,具体类型支持请参考:https://cloud.tencent.com/document/product/548/46964
  31 +@property (nonatomic, copy) NSString *mediaUrl;
  32 +/// 线程或与推送请求相关对话的标识,可用来对推送进行分组
  33 +@property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0);
  34 +/// 启动图片
  35 +@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0);
  36 +
  37 +@end
  38 +
  39 +/// 通知触发类
  40 +@interface XGNotificationTrigger : NSObject <NSCopying>
  41 +
  42 +/// 是否重复,默认值NO
  43 +@property (nonatomic, assign) BOOL repeats;
  44 +/// 推送触发时间,低于iOS10使用
  45 +@property (nonatomic, copy) NSDate *fireDate NS_DEPRECATED_IOS(2_0, 10_0);
  46 +/// 推送触发时间,iOS10+使用,优先级I(dateComponents和timeInterval都有值时优先使用dateComponents)
  47 +@property (nonatomic, copy) NSDateComponents *dateComponents NS_AVAILABLE_IOS(10_0);
  48 +/// 推送触发时间,iOS10+使用,优先级II(dateComponents和timeInterval都有值时优先使用dateComponents)
  49 +/// 当repeats为YES时timeInterval时间间隔必须大于60S
  50 +@property (nonatomic, assign) NSTimeInterval timeInterval NS_AVAILABLE_IOS(10_0);
  51 +
  52 +@end
  53 +
  54 +/// 通知管理类
  55 +@interface XGNotificationRequest : NSObject <NSCopying>
  56 +
  57 +/// 通知请求标识,移除通知会用到此标识
  58 +@property (nonatomic, copy) NSString *requestIdentifier;
  59 +/// 通知内容
  60 +@property (nonatomic, copy) XGNotificationContent *content;
  61 +/// 通知触发器
  62 +@property (nonatomic, copy) XGNotificationTrigger *trigger;
  63 +
  64 +@end
  65 +
  66 +/// 通知类
  67 +@interface XGLocalNotification : NSObject
  68 +
  69 +/// 注册或更新推送
  70 +/// @param request XGNotificationRequest类型,管理推送相关属性
  71 +/// @note iOS10+支持在已有推送基础上设置request.requestIdentifier来更新此推送
  72 ++ (void)addNotification:(XGNotificationRequest *)request;
  73 +
  74 +/// 获取计划发送的通知
  75 +/// @param completionHandler 计划发送通知回调,iOS10+返回UNNotificationRequest数组,低于iOS10返回UILocalNotification数组
  76 ++ (void)getPendingNotificationRequestsWithCompletionHandler:(void (^)(NSArray *requests))completionHandler;
  77 +
  78 +/// 移除计划发送的通知
  79 +/// @param identifiers 要移除的本地推送标识的集合
  80 ++ (void)removePendingLocalNotification:(NSArray<NSString *> *)identifiers;
  81 +
  82 +/// 移除所有计划发送的通知
  83 ++ (void)removeAllPendingLocalNotifications;
  84 +
  85 +@end
  1 +//
  2 +// XGPushStatMTA.h
  3 +// XGPushStatMTA-SDK
  4 +//
  5 +// Originally Created by uweiyuan on 2019/7/4.
  6 +// Copyright (c) 2020 TEG of Tencent. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +
  11 +/**
  12 + XGPushStatMTA版本号
  13 + */
  14 +
  15 +#define MTA_SDK_VERSION @"2.6.0"
  16 +
  17 +#pragma mark - 接口监控相关数据结构
  18 +/**
  19 + 接口统计的枚举值
  20 + */
  21 +typedef enum {
  22 + /**
  23 + 接口调用成功
  24 + */
  25 + XGPushStatMTA_SUCCESS = 0,
  26 +
  27 + /**
  28 + 接口调用失败
  29 + */
  30 + XGPushStatMTA_FAILURE = 1,
  31 +
  32 + /**
  33 + 接口调用出现逻辑错误
  34 + */
  35 + XGPushStatMTA_LOGIC_FAILURE = 2
  36 +} XGPushStatMTAAppMonitorErrorType;
  37 +
  38 +/**
  39 + XGPushStatMTA错误码
  40 +
  41 + - XGPushStatEC_OK: 无错误
  42 + - XGPushStatEC_SERVICE_DISABLE: XGPushStatMTA服务未启动,请检查是否调用[XGPushStatMTA startWithAppkey:]
  43 + - XGPushStatEC_ARGUMENT_INVALID: 参数错误,比如eventID为空,或者在没有结束计时事件的情况下又重新开始计时事件
  44 + - XGPushStatEC_INPUT_LENGTH_LIMIT: 参数过长,详细情况请查看自定义事件API的注释
  45 + */
  46 +typedef NS_ENUM(NSInteger, XGPushStatMTAErrorCode) {
  47 + XGPushStatEC_OK = 0,
  48 + XGPushStatEC_SERVICE_DISABLE = -1,
  49 + XGPushStatEC_ARGUMENT_INVALID = 1000,
  50 + XGPushStatEC_INPUT_LENGTH_LIMIT = 1001,
  51 +};
  52 +
  53 +#pragma mark - XGPushStatMTA统计功能相关接口
  54 +/// XGPushStatMTA核心类
  55 +@interface XGPushStatMTA : NSObject
  56 +
  57 +#pragma mark - 获取XGPushStatMTA版本号
  58 +
  59 +/**
  60 +获取XGPushStatMTA版本号
  61 +
  62 +@return 返回XGPushStatMTA版本号
  63 +*/
  64 ++ (NSString *)getSdkVersion;
  65 +
  66 +#pragma mark - 启动XGPushStatMTA
  67 +
  68 +/**
  69 + 启动XGPushStatMTA
  70 +
  71 + @param appkey 从网页申请的appKey
  72 + */
  73 ++ (void)startWithAppkey:(NSString *)appkey;
  74 +
  75 +#pragma mark - XG
  76 +
  77 +@end
  1 +//
  2 +// XGPushStatMTAConfig.h
  3 +// TA-SDK
  4 +//
  5 +// Originally Created by uweiyuan on 2019/7/4.
  6 +//
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +
  11 +/**
  12 + 上报策略枚举值
  13 + */
  14 +typedef enum {
  15 + /**
  16 + 实时上报
  17 + */
  18 + XGPushStatMTA_STRATEGY_INSTANT = 1,
  19 +
  20 + /**
  21 + 批量上报,达到缓存临界值时触发发送
  22 + */
  23 + XGPushStatMTA_STRATEGY_BATCH = 2,
  24 +
  25 + /**
  26 + 应用启动时发送
  27 + */
  28 + XGPushStatMTA_STRATEGY_APP_LAUNCH = 3,
  29 +
  30 + /**
  31 + 仅在WIFI网络下发送
  32 + */
  33 + XGPushStatMTA_STRATEGY_ONLY_WIFI = 4,
  34 +
  35 + /**
  36 + 每间隔一定最小时间发送,默认24小时
  37 + */
  38 + XGPushStatMTA_STRATEGY_PERIOD = 5,
  39 +
  40 + /**
  41 + 开发者在代码中主动调用发送行为
  42 + */
  43 + XGPushStatMTA_STRATEGY_DEVELOPER = 6,
  44 +
  45 + /**
  46 + 仅在WIFI网络下发送, 发送失败以及非WIFI网络情况下不缓存数据
  47 + */
  48 + XGPushStatMTA_STRATEGY_ONLY_WIFI_NO_CACHE = 7,
  49 +
  50 + /*
  51 + 不缓存数据,批量上报+间隔上报组合。适用于上报特别频繁的场景。
  52 + */
  53 + XGPushStatMTA_STRATEGY_NO_CACHE_BATCH_PERIOD = 8
  54 +
  55 +} XGPushStatMTAStatReportStrategy;
  56 +
  57 +@interface XGPushStatMTAConfig : NSObject
  58 +
  59 +#pragma mark - 常规配置项
  60 +
  61 +/**
  62 + 取得XGPushStatMTA配置的共享实例
  63 + 修改实例的属性必须在调用XGPushStatMTA启动函数之前执行
  64 +
  65 + @return XGPushStatMTAConfig的共享实例
  66 + */
  67 ++ (instancetype)getInstance;
  68 +
  69 +/**
  70 + debug开关
  71 + 开以后,终端会输出debug日志,默认关闭
  72 + */
  73 +@property BOOL debugEnable;
  74 +
  75 +/**
  76 + Session过期时间,默认30秒
  77 + */
  78 +@property uint32_t sessionTimeoutSecs;
  79 +
  80 +/**
  81 + 上报策略
  82 + */
  83 +@property (nonatomic) XGPushStatMTAStatReportStrategy reportStrategy;
  84 +
  85 +/**
  86 + 是否自动统计整个APP的使用时长,默认打开
  87 + */
  88 +@property BOOL autoTM;
  89 +
  90 +/**
  91 + 若打开此项,XGPushStatMTA会在ViewController的
  92 + viewDidAppear和viewWillDisappear
  93 + 方法中,自动统计页面时长。
  94 + 默认打开
  95 +
  96 + 注:若您自行实现了ViewController中
  97 + 的viewDidAppear和viewWillDisappear
  98 + 这两个方法。请在这两个方法中分别调用父类
  99 + 的对应方法。否则此功能可能无法正常工作。
  100 + */
  101 +@property BOOL autoTrackPage;
  102 +
  103 +/**
  104 + 应用的统计AppKey
  105 + */
  106 +@property (nonatomic, copy) NSString *appkey;
  107 +
  108 +/**
  109 + 渠道名,默认为"appstore"
  110 + */
  111 +@property (nonatomic, copy) NSString *channel;
  112 +
  113 +/**
  114 + 最大缓存的未发送的统计消息,默认1024条
  115 + */
  116 +@property uint32_t maxStoreEventCount;
  117 +
  118 +/**
  119 + 统计上报策略为BATCH时,触发上报时最小缓存消息数,默认30条
  120 + */
  121 +@property uint32_t minBatchReportCount;
  122 +
  123 +/**
  124 + 发送失败最大重试数,默认3次
  125 + */
  126 +@property uint32_t maxSendRetryCount;
  127 +
  128 +/**
  129 + 上报策略为PERIOD时发送间隔,单位分钟,默认一天(1440分钟)
  130 + */
  131 +@property uint32_t sendPeriodMinutes;
  132 +
  133 +/**
  134 + 允许同时统计的时长事件数,默认1024条
  135 + */
  136 +@property uint32_t maxParallelTimingEvents;
  137 +
  138 +/**
  139 + 智能上报
  140 + 开启以后设备接入WIFI会实时上报
  141 + 否则按照全局策略上报
  142 + 默认打开
  143 + */
  144 +@property BOOL smartReporting;
  145 +
  146 +/**
  147 + 最大上报的单条event长度,超过不上报
  148 + 单位Byte
  149 + 默认4096,即4KB
  150 + */
  151 +@property uint32_t maxReportEventLength;
  152 +
  153 +/**
  154 + XGPushStatMTA是否启动
  155 + */
  156 +@property BOOL statEnable;
  157 +
  158 +/**
  159 + 设备的idfa,建议有广告权限的app设置此字段
  160 + 默认为空
  161 + */
  162 +//@property (nonatomic, copy) NSString *ifa;
  163 +
  164 +/**
  165 + 用户自定义的App版本
  166 + 默认为空
  167 + 若设置了这个字段,SDK会取这个字段作为APP版本上报
  168 + 若没设置,则取工程配置文件中的‘Bundle versions string, short’字段作为APP版本上报
  169 + 若没没设置‘Bundle versions string, short’字段,则取‘Bundle version’字段上报
  170 + */
  171 +@property (nonatomic, copy) NSString *customerAppVersion;
  172 +
  173 +/**
  174 + 用户自定义的设备标识
  175 + */
  176 +@property (nonatomic, copy) NSString *customerUserID;
  177 +
  178 +/**
  179 + 一个Session内允许上报的最大事件数
  180 + 传入-1表示无限制
  181 + 不建议修改这个字段
  182 + 默认无限制
  183 + */
  184 +@property int32_t maxSessionStatReportCount;
  185 +
  186 +/**
  187 + mid,会存放到mid字段(推荐赋值APNS的token)
  188 + */
  189 +@property (nonatomic, copy) NSString *mid;
  190 +
  191 +/**
  192 + guid,预留字段,无特定含义
  193 + */
  194 +@property (nonatomic, assign) NSUInteger guid;
  195 +
  196 +/**
  197 + 获取在XGPushStatMTA前端控制台配置的参数
  198 + 调用这个函数前需要在XGPushStatMTA前端控制台中‘应用配置管理项’下的‘自定义参数’中配置才能生效
  199 + 首次配置或者更改参数配置后,需要3-5分钟才能生效
  200 +
  201 + @param key 参数的key
  202 + @param v 没取到参数时返回的默认值
  203 + @return 参数的值或者默认值
  204 + */
  205 +- (NSString *)getCustomProperty:(NSString *)key default:(NSString *)v;
  206 +
  207 +/**
  208 +自定义上报地址
  209 +*/
  210 +@property (nonatomic, copy) NSString *statReportURL;
  211 +
  212 +/// tpns accessID
  213 +@property (nonatomic, assign) uint32_t tpnsAccessID;
  214 +
  215 +/// tpns sdk版本
  216 +@property (nonatomic, copy) NSString *tpnsSDKVersion;
  217 +
  218 +/// 是否检查上报域名
  219 +@property (nonatomic, assign) BOOL checkReportDomain;
  220 +
  221 +/// 当前允许的上报域名
  222 +@property (nonatomic, copy) NSString *enableReportDomainStr;
  223 +
  224 +@end
  1 +//
  2 +// XGMTACloud.h
  3 +// XGMTACloud
  4 +//
  5 +// Created by uwei on 2019/7/4.
  6 +// Copyright © 2019 TEG of Tencent. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +
  11 +//! Project version number for XGMTACloud.
  12 +FOUNDATION_EXPORT double XGMTACloudVersionNumber;
  13 +
  14 +//! Project version string for XGMTACloud.
  15 +FOUNDATION_EXPORT const unsigned char XGMTACloudVersionString[];
  16 +
  17 +// In this header, you should import all the public headers of your framework using statements like #import <XGMTACloud/PublicHeader.h>
  18 +
  19 +#import "MTA.h"
  20 +#import "MTAConfig.h"
  1 +framework module XGMTACloud {
  2 + umbrella header "XGMTACloud.h"
  3 +
  4 + export *
  5 + module * { export * }
  6 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>NSPrivacyTracking</key>
  6 + <false/>
  7 + <key>NSPrivacyTrackingDomains</key>
  8 + <array/>
  9 + <key>NSPrivacyCollectedDataTypes</key>
  10 + <array/>
  11 + <key>NSPrivacyAccessedAPITypes</key>
  12 + <array>
  13 + <dict>
  14 + <key>NSPrivacyAccessedAPIType</key>
  15 + <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
  16 + <key>NSPrivacyAccessedAPITypeReasons</key>
  17 + <array>
  18 + <string>CA92.1</string>
  19 + </array>
  20 + </dict>
  21 + </array>
  22 +</dict>
  23 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>files</key>
  6 + <dict>
  7 + <key>Headers/MTA.h</key>
  8 + <data>
  9 + 9s4ugmDpzDlua3YuSHFrXvBawPY=
  10 + </data>
  11 + <key>Headers/MTAConfig.h</key>
  12 + <data>
  13 + S8DzAUabb2Z7Sduq23UWpuF+ewQ=
  14 + </data>
  15 + <key>Info.plist</key>
  16 + <data>
  17 + fFF7V7oybiH46AfSaN9QD1Akp7s=
  18 + </data>
  19 + <key>nmstool</key>
  20 + <data>
  21 + wLg/Aa6oNHo4FU6kPdw1r871tcE=
  22 + </data>
  23 + </dict>
  24 + <key>files2</key>
  25 + <dict>
  26 + <key>Headers/MTA.h</key>
  27 + <dict>
  28 + <key>hash</key>
  29 + <data>
  30 + 9s4ugmDpzDlua3YuSHFrXvBawPY=
  31 + </data>
  32 + <key>hash2</key>
  33 + <data>
  34 + mQf43/NVg2TdbkU94+0M0J/M1Kpa3ju++RoHwKlEsgo=
  35 + </data>
  36 + </dict>
  37 + <key>Headers/MTAConfig.h</key>
  38 + <dict>
  39 + <key>hash</key>
  40 + <data>
  41 + S8DzAUabb2Z7Sduq23UWpuF+ewQ=
  42 + </data>
  43 + <key>hash2</key>
  44 + <data>
  45 + RuaaY0SDotozeySmHb0CAT2C8OkiioWobXqXViEWsnw=
  46 + </data>
  47 + </dict>
  48 + <key>nmstool</key>
  49 + <dict>
  50 + <key>hash</key>
  51 + <data>
  52 + wLg/Aa6oNHo4FU6kPdw1r871tcE=
  53 + </data>
  54 + <key>hash2</key>
  55 + <data>
  56 + qfFQQuovYJgAeKuatkNigxnKzT51XZlTZEkx6pFNoNw=
  57 + </data>
  58 + </dict>
  59 + </dict>
  60 + <key>rules</key>
  61 + <dict>
  62 + <key>^.*</key>
  63 + <true/>
  64 + <key>^.*\.lproj/</key>
  65 + <dict>
  66 + <key>optional</key>
  67 + <true/>
  68 + <key>weight</key>
  69 + <real>1000</real>
  70 + </dict>
  71 + <key>^.*\.lproj/locversion.plist$</key>
  72 + <dict>
  73 + <key>omit</key>
  74 + <true/>
  75 + <key>weight</key>
  76 + <real>1100</real>
  77 + </dict>
  78 + <key>^Base\.lproj/</key>
  79 + <dict>
  80 + <key>weight</key>
  81 + <real>1010</real>
  82 + </dict>
  83 + <key>^version.plist$</key>
  84 + <true/>
  85 + </dict>
  86 + <key>rules2</key>
  87 + <dict>
  88 + <key>.*\.dSYM($|/)</key>
  89 + <dict>
  90 + <key>weight</key>
  91 + <real>11</real>
  92 + </dict>
  93 + <key>^(.*/)?\.DS_Store$</key>
  94 + <dict>
  95 + <key>omit</key>
  96 + <true/>
  97 + <key>weight</key>
  98 + <real>2000</real>
  99 + </dict>
  100 + <key>^.*</key>
  101 + <true/>
  102 + <key>^.*\.lproj/</key>
  103 + <dict>
  104 + <key>optional</key>
  105 + <true/>
  106 + <key>weight</key>
  107 + <real>1000</real>
  108 + </dict>
  109 + <key>^.*\.lproj/locversion.plist$</key>
  110 + <dict>
  111 + <key>omit</key>
  112 + <true/>
  113 + <key>weight</key>
  114 + <real>1100</real>
  115 + </dict>
  116 + <key>^Base\.lproj/</key>
  117 + <dict>
  118 + <key>weight</key>
  119 + <real>1010</real>
  120 + </dict>
  121 + <key>^Info\.plist$</key>
  122 + <dict>
  123 + <key>omit</key>
  124 + <true/>
  125 + <key>weight</key>
  126 + <real>20</real>
  127 + </dict>
  128 + <key>^PkgInfo$</key>
  129 + <dict>
  130 + <key>omit</key>
  131 + <true/>
  132 + <key>weight</key>
  133 + <real>20</real>
  134 + </dict>
  135 + <key>^embedded\.provisionprofile$</key>
  136 + <dict>
  137 + <key>weight</key>
  138 + <real>20</real>
  139 + </dict>
  140 + <key>^version\.plist$</key>
  141 + <dict>
  142 + <key>weight</key>
  143 + <real>20</real>
  144 + </dict>
  145 + </dict>
  146 +</dict>
  147 +</plist>
  1 +//
  2 +// TPNS核心接口
  3 +// TPNS-SDK
  4 +//
  5 +// Created by xiangchen on 13-10-18.
  6 +// Update by uweiyuan on 4/08/17.
  7 +// Copyright (c) 2019 TEG of Tencent. All rights reserved.
  8 +//
  9 +
  10 +#import <Foundation/Foundation.h>
  11 +#import <UIKit/UIKit.h>
  12 +
  13 +#if __IPHONE_OS_VERSION_MIN_REQUIRED
  14 +#import <UserNotifications/UserNotifications.h>
  15 +#endif
  16 +
  17 +#pragma mark - XGPush代理,提供注册及反注册结果回调,消息接收及消息点击回调,设置角标回调
  18 +
  19 +/**
  20 + @brief 监控TPNS服务启动和设备token注册的一组方法
  21 + */
  22 +@protocol XGPushDelegate <NSObject>
  23 +
  24 +@optional
  25 +
  26 +#pragma mark - ********注册相关回调********
  27 +
  28 +/**
  29 + @brief 注册推送服务回调(TPNS SDK1.2.6.0+)
  30 +
  31 + @param deviceToken APNs 生成的Device Token
  32 + @param xgToken TPNS 生成的 Token,推送消息时需要使用此值。TPNS 维护此值与APNs 的 Device Token的映射关系
  33 + @param error 错误信息,若error为nil则注册推送服务成功
  34 + @note 1.3.9.9及以上版本请使用厂商token回调获取deviceToken,回调方法为xgPushDidRegisterForRemoteNotificationsWithDeviceToken:
  35 + */
  36 +- (void)xgPushDidRegisteredDeviceToken:(nullable NSString *)deviceToken xgToken:(nullable NSString *)xgToken error:(nullable NSError *)error;
  37 +
  38 +/**
  39 +@brief 注册推送服务失败回调(TPNS SDK1.2.7.1+)
  40 +
  41 +@param error 注册失败错误信息
  42 +*/
  43 +- (void)xgPushDidFailToRegisterDeviceTokenWithError:(nullable NSError *)error;
  44 +
  45 +/**
  46 + @brief 反注册回调,当您调用了终止TPNS服务接口stopXGNotification时会收到此回调
  47 +
  48 + @param isSuccess TPNS是否终止
  49 + @param error TPNS推动终止错误的信息
  50 + */
  51 +- (void)xgPushDidFinishStop:(BOOL)isSuccess error:(nullable NSError *)error;
  52 +
  53 +#pragma mark - ********通知相关回调********
  54 +
  55 +/**
  56 + @brief 统一消息出口,此接口对不同操作系统版本的消息接口进行了封装
  57 +
  58 + @param notification 通知内容,需要根据返回类型来确定
  59 + @param completionHandler 接收到消息的回调,必须要调用
  60 + @note 自建通道消息也会通过此回调转发给应用侧使用,自建通道消息体结构与APNs通知消息体结构相同
  61 + */
  62 +- (void)xgPushDidReceiveRemoteNotification:(nonnull id)notification withCompletionHandler:(nullable void (^)(NSUInteger))completionHandler;
  63 +
  64 +/// 统一点击回调(TPNS SDK1.2.7.1+)
  65 +/// @param response 如果iOS 10+/macOS 10.14+则为UNNotificationResponse,低于目标版本则为NSDictionary
  66 +- (void)xgPushDidReceiveNotificationResponse:(nonnull id)response withCompletionHandler:(nonnull void (^)(void))completionHandler;
  67 +
  68 +#pragma mark - ********其他相关回调********
  69 +
  70 +/**
  71 + @brief 厂商(APNs)token回调1.3.9.9新增
  72 +
  73 + @param deviceToken 厂商(APNs)token,可变长度,不要硬编码它们的大小,若为空则代表获取失败
  74 + @note 厂商token字符串类型可使用[[XGPushTokenManager defaultTokenManager] deviceTokenString]获取
  75 + */
  76 +- (void)xgPushDidRegisterForRemoteNotificationsWithDeviceToken:(nullable NSData *)deviceToken;
  77 +
  78 +/**
  79 + @brief 监控设置TPNS服务器下发角标的情况
  80 +
  81 + @param isSuccess isSuccess 上报是否成功
  82 + @param error 设置失败的信息
  83 + */
  84 +- (void)xgPushDidSetBadge:(BOOL)isSuccess error:(nullable NSError *)error;
  85 +
  86 +/**
  87 + @brief 通知权限弹窗的回调
  88 +
  89 + @param isEnable 用户是否允许
  90 + @param error 错误信息
  91 + */
  92 +- (void)xgPushDidRequestNotificationPermission:(bool)isEnable error:(nullable NSError *)error;
  93 +
  94 +/**
  95 +@brief TPNS日志回调方法
  96 +
  97 +@param logInfo 日志信息
  98 +@note 可以在此方法获取TPNS的log日志。此方法和XGPush->enableDebug无关。
  99 +*/
  100 +- (void)xgPushLog:(nullable NSString *)logInfo;
  101 +
  102 +/**
  103 +@brief TPNS采集字段回调方法,如果需要知道TPNS采集的字段可实现此方法
  104 +
  105 +@param field 字段信息
  106 +@param description 字段描述
  107 +*/
  108 +- (void)xgPushDidCollectField:(nonnull NSString *)field andDescription:(nonnull NSString *)description;
  109 +
  110 +/// TPNS网络连接成功
  111 +- (void)xgPushNetworkConnected;
  112 +
  113 +/// TPNS网络连接断开
  114 +- (void)xgPushNetworkDisconnected;
  115 +
  116 +#pragma mark - ********XGPushDelegate,建议废弃的代理回调********
  117 +/**
  118 + @brief 监控TPNS服务地启动情况(已废弃)
  119 +
  120 + @param isSuccess TPNS是否启动成功
  121 + @param error TPNS启动错误的信息
  122 + */
  123 +- (void)xgPushDidFinishStart:(BOOL)isSuccess
  124 + error:(nullable NSError *)error
  125 + __deprecated_msg("This method is no longer called, using xgPushDidRegisteredDeviceToken:xgToken:error: instead");
  126 +
  127 +/**
  128 + @brief 设备token注册TPNS服务的回调
  129 +
  130 + @param deviceToken APNs 生成的Device Token
  131 + @param error 错误信息
  132 + */
  133 +- (void)xgPushDidRegisteredDeviceToken:(nullable NSString *)deviceToken
  134 + error:(nullable NSError *)error
  135 + __deprecated_msg("recommended to use xgPushDidRegisteredDeviceToken:xgToken:error: instead");
  136 +
  137 +/**
  138 + @brief 监控TPNS服务上报推送消息的情况
  139 +
  140 + @param isSuccess 上报是否成功
  141 + @param error 上报失败的信息
  142 + */
  143 +- (void)xgPushDidReportNotification:(BOOL)isSuccess
  144 + error:(nullable NSError *)error __deprecated_msg("You should no longer call it, SDK handles it automatically.");
  145 +
  146 +/**
  147 + @brief 处理iOS 10、macOS10.14 UNUserNotification.framework的对应的方法
  148 +
  149 + @param center [UNUserNotificationCenter currentNotificationCenter]
  150 + @param notification 通知对象
  151 + @param completionHandler 回调对象,必须调用
  152 + */
  153 +- (void)xgPushUserNotificationCenter:(nonnull UNUserNotificationCenter *)center
  154 + willPresentNotification:(nullable UNNotification *)notification
  155 + withCompletionHandler:(nonnull void (^)(UNNotificationPresentationOptions options))completionHandler __IOS_AVAILABLE(10.0)
  156 + __OSX_AVAILABLE(10.14)
  157 + __deprecated_msg("recommended to use xgPushDidReceiveRemoteNotification:withCompletionHandler: instead");
  158 +
  159 +/**
  160 + @brief 处理iOS 10、macOS10.14 UNUserNotification.framework的对应的方法
  161 +
  162 + @param center [UNUserNotificationCenter currentNotificationCenter]
  163 + @param response 用户对通知消息的响应对象
  164 + @param completionHandler 回调对象,必须调用
  165 + */
  166 +- (void)xgPushUserNotificationCenter:(nonnull UNUserNotificationCenter *)center
  167 + didReceiveNotificationResponse:(nullable UNNotificationResponse *)response
  168 + withCompletionHandler:(nonnull void (^)(void))completionHandler __IOS_AVAILABLE(10.0)__OSX_AVAILABLE(10.14)
  169 + __deprecated_msg("recommended to use xgPushDidReceiveNotificationResponse:withCompletionHandler: instead");
  170 +
  171 +@end
  172 +
  173 +#pragma mark - XGPush类,提供注册及反注册,设置角标等方法
  174 +
  175 +@class XGNotificationConfigure;
  176 +
  177 +/**
  178 + @brief 管理TPNS服务的对象,负责注册推送权限、消息的管理、调试模式的开关设置等
  179 + */
  180 +@interface XGPush : NSObject
  181 +
  182 +/**
  183 + @brief 获取TPNS管理的单例对象
  184 + @return TPNS对象
  185 + */
  186 ++ (nonnull instancetype)defaultManager;
  187 +
  188 +/**
  189 + @brief 关于TPNS SDK接口协议的对象
  190 + */
  191 +@property (weak, nonatomic, nullable, readonly) id<XGPushDelegate> delegate;
  192 +
  193 +/**
  194 + @brief 应用启动的代理对象
  195 + @note 当SDK框架出现自动化处理的异常时,可以通过此属性进行设置,对应用代理对象处理逻辑进行补足
  196 + */
  197 +@property (weak, nonatomic, nullable) id<UIApplicationDelegate> appDelegate;
  198 +
  199 +/**
  200 + @brief 这个开关表明是否打印TPNS SDK的日志信息
  201 + */
  202 +@property (assign, getter=isEnableDebug) BOOL enableDebug;
  203 +
  204 +/**
  205 + @brief 调用startXG注册前,赋值此参数可将集成渠道信息传给我们
  206 + @note sdkChannel取值如下none、flutter、rn、unity、apicloud、donut、msdk、other
  207 + */
  208 +@property (copy, nonatomic, nullable) NSString *sdkChannel;
  209 +
  210 +/**
  211 + @brief 管理应用角标
  212 + @note 需要在主线程调用
  213 + */
  214 +@property (nonatomic) NSInteger xgApplicationBadgeNumber;
  215 +
  216 +/**
  217 + @brief 传递didFinishLaunchingWithOptions的launchOptions,用于推送拉起app"启动数"统计
  218 + @note 在startXGWithAccessID之前调用,使用[launchOptions mutableCopy]传值
  219 + */
  220 +@property (nonatomic, strong) NSMutableDictionary *_Nullable launchOptions;
  221 +
  222 +/**
  223 + @brief TPNS管理对象,管理推送的配置选项,例如,注册推送的样式
  224 + */
  225 +@property (strong, nonatomic, nullable) XGNotificationConfigure *notificationConfigure;
  226 +
  227 +#pragma mark - ********注册及反注册方法********
  228 +
  229 +/**
  230 + @brief 通过使用在TPNS官网注册的应用的信息,启动TPNS服务
  231 +
  232 + @param accessID 通过TPNS管理台申请的 AccessID
  233 + @param accessKey 通过TPNS管理台申请的 AccessKey
  234 + @param delegate 回调对象
  235 + @note 接口所需参数必须要正确填写,反之TPNS服务将不能正确为应用推送消息
  236 + */
  237 +- (void)startXGWithAccessID:(uint32_t)accessID accessKey:(nonnull NSString *)accessKey delegate:(nullable id<XGPushDelegate>)delegate;
  238 +
  239 +/**
  240 + @brief 停止TPNS服务
  241 + @note
  242 + 调用此方法将导致当前设备不再接受TPNS服务推送的消息.如果再次需要接收TPNS服务的消息推送,则必须需要再次调用startXG:withAccessKey:delegate:方法重启TPNS服务
  243 + */
  244 +- (void)stopXGNotification;
  245 +
  246 +#pragma mark - ********实时活动********
  247 +/**
  248 + @brief 实时活动回调结果
  249 + @param result 返回请求的liveActivity的id和token @{@"activityId":@"idValue", @"token":@"tokenValue"}
  250 + */
  251 +typedef void (^XGPushLiveActivityCompletion)(NSDictionary *_Nonnull result, NSError *_Nullable error);
  252 +
  253 +/**
  254 + @brief 开始实时活动,pushToken有变化时需重新调用
  255 +
  256 + @param activityId liveActivity的名字
  257 + @param token liveActivity对应的pushToken,该token有变化时需要及时调用此方法更新
  258 + @param completionHandler 请求回执,error为nil代表请求成功
  259 + @note 实时活动结束时需要及时调用该方法且pushToken传nil
  260 + */
  261 +- (void)startLiveActivityWithId:(nonnull NSString *)activityId
  262 + pushToken:(nullable NSString *)token
  263 + withCompletionHandler:(nullable XGPushLiveActivityCompletion)completionHandler __API_AVAILABLE(ios(16.1));
  264 +
  265 +#pragma mark - ********其他相关方法********
  266 +
  267 +/**
  268 + @brief 上报当前App角标数到TPNS服务器
  269 +
  270 + @param badgeNumber 应用的角标数,传递前请计算好结果值(业务逻辑或者其他SDK可能会影响角标数)
  271 + @note 1.此接口是为了实现角标+1的功能,服务器会在这个数值基础上进行角标数新增的操作,调用成功之后,会覆盖之前值。
  272 + 2.如果使用RestAPI推送,对应badge_type:-2时生效。
  273 + 3.调用此接口不会改变当前角标值。
  274 + */
  275 +- (void)setBadge:(NSInteger)badgeNumber;
  276 +
  277 +/**
  278 + @brief 查询设备通知权限是否被用户允许
  279 +
  280 + @param handler 查询结果的返回方法
  281 + @note iOS 10 or later 回调是异步地执行
  282 + */
  283 +- (void)deviceNotificationIsAllowed:(nonnull void (^)(BOOL isAllowed))handler;
  284 +
  285 +/**
  286 + @brief 查看SDK的版本
  287 +
  288 + @return sdk版本号
  289 + */
  290 +- (nonnull NSString *)sdkVersion;
  291 +
  292 +/**
  293 + @brief 上报日志信息 (TPNS SDK1.2.4.1+)
  294 + @param handler 异步地返回上报结果
  295 + @note 1.回调参数可能会被触发多次,如果存在多个日志文件
  296 + 2.回调的result, 上传成功为true, 失败为false
  297 + 3.回调的errorMessage,如果上传成功,则返回日志文件地址。如果上传失败,则返回错误信息。
  298 +*/
  299 +- (void)uploadLogCompletionHandler:(nullable void (^)(BOOL result, NSString *_Nullable errorMessage))handler;
  300 +
  301 +/**
  302 + @brief 清除TPNS缓存 (TPNS SDK1.2.7.1+)
  303 + @return 清除结果
  304 +*/
  305 +- (BOOL)clearTPNSCache;
  306 +
  307 +/**
  308 + @brief 设置采集字段信息 (TPNS SDK1.3.9.4+)
  309 + @note 格式为@{@"采集字段key":@"字段值value"},目前key取值仅支持"idfv","deviceName","deviceModel","apsEnvironment"
  310 + @note 此接口需在startXG之前调用
  311 +*/
  312 +- (void)customFieldDic:(nonnull NSDictionary *)fieldDic;
  313 +
  314 +@end
  315 +
  316 +#pragma mark - XGPushTokenManager代理,用于接收账号和标签操作的回调
  317 +
  318 +/**
  319 + @brief 设备token绑定的类型,绑定指定类型之后,就可以在TPNS前端按照指定的类型进行指定范围的推送
  320 +
  321 + - XGPushTokenBindTypeNone: 当前设备token不绑定任何类型,可以使用token单推,或者是全量推送(不推荐使用 )
  322 + - XGPushTokenBindTypeAccount: 当前设备token与账号绑定之后,可以使用账号推送
  323 + - XGPushTokenBindTypeTag: 当前设备token与指定标签绑定之后,可以使用标签推送
  324 + @note 此枚举是老版本接口(bind/unbind/update identifier)用于区分业务(账号/标签)的枚举,新版本账号/标签接口已拆分,无需使用此枚举
  325 + */
  326 +typedef NS_ENUM(NSUInteger, XGPushTokenBindType) {
  327 + XGPushTokenBindTypeNone = (0),
  328 + XGPushTokenBindTypeAccount = (1 << 0),
  329 + XGPushTokenBindTypeTag = (1 << 1)
  330 +};
  331 +
  332 +/**
  333 + @brief 定义了一组关于设备token绑定,解绑账号和标签的回调方法,用以监控绑定和解绑的情况
  334 + */
  335 +@protocol XGPushTokenManagerDelegate <NSObject>
  336 +
  337 +@optional
  338 +
  339 +#pragma mark - ********账号相关代理回调,TPNS SDK1.2.8.0+********
  340 +
  341 +/**
  342 + @brief 对应upsertAccountsByDict:的回调(TPNS SDK1.2.9.0+)
  343 +
  344 + @param accountsDict 账号字典
  345 + @param error 绑定账号的结果信息
  346 + */
  347 +- (void)xgPushDidUpsertAccountsByDict:(nonnull NSDictionary *)accountsDict error:(nullable NSError *)error;
  348 +
  349 +/**
  350 + @brief 对应delAccountsByKeys:的回调(TPNS SDK1.2.9.0+)
  351 +
  352 + @param accountsKeys 账号集合
  353 + @param error 解绑账号的结果信息
  354 + */
  355 +- (void)xgPushDidDelAccountsByKeys:(nonnull NSSet<NSNumber *> *)accountsKeys error:(nullable NSError *)error;
  356 +
  357 +/**
  358 + @brief 对应clearAccounts的回调(TPNS SDK1.2.8.0+)
  359 +
  360 + @param error 清除账号的结果信息
  361 + */
  362 +- (void)xgPushDidClearAccountsError:(nullable NSError *)error;
  363 +
  364 +#pragma mark - ********标签相关代理回调,TPNS SDK1.2.8.0+********
  365 +
  366 +/**
  367 + @brief 对应appendTags:的回调(TPNS SDK1.2.8.0+)
  368 +
  369 + @param tags 标签数组
  370 + @param error 绑定标签的结果信息
  371 + */
  372 +- (void)xgPushDidAppendTags:(nonnull NSArray<NSString *> *)tags error:(nullable NSError *)error;
  373 +
  374 +/**
  375 + @brief 对应delTags:的回调(TPNS SDK1.2.8.0+)
  376 +
  377 + @param tags 标签数组
  378 + @param error 解绑标签的结果信息
  379 + */
  380 +- (void)xgPushDidDelTags:(nonnull NSArray<NSString *> *)tags error:(nullable NSError *)error;
  381 +
  382 +/**
  383 + @brief 对应clearTags的回调(TPNS SDK1.2.8.0+)
  384 +
  385 + @param error 清除标签的结果信息
  386 + */
  387 +- (void)xgPushDidClearTagsError:(nullable NSError *)error;
  388 +
  389 +/**
  390 + @brief 对应clearAndAppendTags:的回调(TPNS SDK1.2.8.0+)
  391 +
  392 + @param tags 标签数组
  393 + @param error 更新标签的结果信息
  394 + */
  395 +- (void)xgPushDidClearAndAppendTags:(nonnull NSArray<NSString *> *)tags error:(nullable NSError *)error;
  396 +
  397 +/**
  398 + @brief 对应queryTags:的回调
  399 +
  400 + @param tags 标签数组
  401 + @param totalCount 绑定的所有标签总数
  402 + @param error 查询标签的结果信息
  403 + */
  404 +- (void)xgPushDidQueryTags:(nullable NSArray<NSString *> *)tags totalCount:(NSUInteger)totalCount error:(nullable NSError *)error;
  405 +
  406 +#pragma mark - ********用户属性相关代理回调,个性化推送使用********
  407 +/**
  408 + @brief 对应upsertAttributes:的回调(TPNS SDK1.2.9.0+)
  409 +
  410 + @param attributes 用户属性
  411 + @param keys 无效用户属性键的数组, 未在管理台配置
  412 + @param error token对象绑定的结果信息
  413 + */
  414 +- (void)xgPushDidUpsertAttributes:(nonnull NSDictionary *)attributes invalidKeys:(nullable NSArray *)keys error:(nullable NSError *)error;
  415 +
  416 +/**
  417 + @brief 对应delAttributes:的回调(TPNS SDK1.2.8.0+)
  418 +
  419 + @param attributeKeys 用户属性key组成的集合
  420 + @param keys 无效用户属性键的数组, 未在管理台配置
  421 + @param error token对象解绑的结果信息
  422 + */
  423 +- (void)xgPushDidDelAttributeKeys:(nonnull NSSet *)attributeKeys invalidKeys:(nullable NSArray *)keys error:(nullable NSError *)error;
  424 +
  425 +/**
  426 + @brief 对应clearAttributes的回调(TPNS SDK1.2.8.0+)
  427 +
  428 + @param error token对象删除所有用户属性的结果信息
  429 + */
  430 +- (void)xgPushDidClearAttributesWithError:(nullable NSError *)error;
  431 +
  432 +/**
  433 + @brief 对应clearAndAppendAttributes:的回调(TPNS SDK1.2.8.0+)
  434 +
  435 + @param attributes 用户属性
  436 + @param keys 无效用户属性键的数组, 未在管理台配置
  437 + @param error token对象更新的结果信息
  438 + */
  439 +- (void)xgPushDidClearAndAppendAttributes:(nonnull NSDictionary *)attributes invalidKeys:(nullable NSArray *)keys error:(nullable NSError *)error;
  440 +
  441 +#pragma mark - ********建议废弃的账号、标签相关代理回调********
  442 +
  443 +/**
  444 + @brief 对应clearAndAppendAccounts:的回调(TPNS SDK1.2.9.0+)
  445 +
  446 + @param accountsDict 账号数组
  447 + @param error 更新账号的结果信息
  448 + */
  449 +- (void)xgPushDidClearAndAppendAccountsByDict:(nonnull NSDictionary *)accountsDict
  450 + error:(nullable NSError *)error
  451 + __deprecated_msg("recommended to use upsertAccountsByDict: to add accounts,and delegete update to xgPushDidUpsertAccountsByDict:error:");
  452 +
  453 +/**
  454 + @brief 对应appendAccounts:的回调(TPNS SDK1.2.8.0+)
  455 +
  456 + @param accounts 账号数组
  457 + @param error 绑定账号的结果信息
  458 + */
  459 +- (void)xgPushDidAppendAccounts:(nonnull NSArray<NSDictionary *> *)accounts
  460 + error:(nullable NSError *)error
  461 + __deprecated_msg("recommended to use upsertAccountsByDict: to add accounts,and delegete update to xgPushDidUpsertAccountsByDict:error:");
  462 +
  463 +/**
  464 + @brief 对应delAccounts:的回调(TPNS SDK1.2.8.0+)
  465 +
  466 + @param accounts 账号数组
  467 + @param error 解绑账号的结果信息
  468 + */
  469 +- (void)xgPushDidDelAccounts:(nonnull NSArray<NSDictionary *> *)accounts
  470 + error:(nullable NSError *)error
  471 + __deprecated_msg("recommended to use delAccountsByKeys: to add accounts,and delegete update to xgPushDidDelAccountsByKeys:error:");
  472 +
  473 +/**
  474 + @brief 对应clearAndAppendAccounts:的回调(TPNS SDK1.2.8.0+)
  475 +
  476 + @param accounts 账号数组
  477 + @param error 更新账号的结果信息
  478 + */
  479 +- (void)xgPushDidClearAndAppendAccounts:(nonnull NSArray<NSDictionary *> *)accounts
  480 + error:(nullable NSError *)error
  481 + __deprecated_msg("recommended to use upsertAccountsByDict: to add accounts,and delegete update to xgPushDidUpsertAccountsByDict:error:");
  482 +
  483 +/**
  484 + @brief 监控token对象绑定的情况
  485 +
  486 + @param identifier token对象绑定的标识
  487 + @param type token对象绑定的类型
  488 + @param error token对象绑定的结果信息
  489 + */
  490 +- (void)xgPushDidBindWithIdentifier:(nonnull NSString *)identifier
  491 + type:(XGPushTokenBindType)type
  492 + error:(nullable NSError *)error
  493 + __deprecated_msg(
  494 + "recommended to use upsertAccountsByDict: to add accounts,and delegete update to xgPushDidUpsertAccountsByDict:error:;use appendTags: to "
  495 + "add tags, and delegete update to xgPushDidAppendTags:error:");
  496 +
  497 +/**
  498 + @brief 监控token对象解绑的情况
  499 +
  500 + @param identifier token对象解绑的标识
  501 + @param type token对象解绑的类型
  502 + @param error token对象解绑的结果信息
  503 + */
  504 +- (void)xgPushDidUnbindWithIdentifier:(nonnull NSString *)identifier
  505 + type:(XGPushTokenBindType)type
  506 + error:(nullable NSError *)error
  507 + __deprecated_msg("recommended to use delAccounts: to delete accounts,and delegete update to xgPushDidDelAccounts:error:; use delTags: to delete "
  508 + "tags, and delegete update to xgPushDidDelTags:error:");
  509 +
  510 +/**
  511 + @brief 监控token对象identifiers绑定的情况
  512 +
  513 + @param identifiers token对象绑定的标识
  514 + @param type token对象绑定的类型
  515 + @param error token对象绑定的结果信息
  516 + */
  517 +- (void)xgPushDidBindWithIdentifiers:(nonnull NSArray *)identifiers
  518 + type:(XGPushTokenBindType)type
  519 + error:(nullable NSError *)error
  520 + __deprecated_msg(
  521 + "recommended to use upsertAccountsByDict: to add accounts,and delegete update to xgPushDidUpsertAccountsByDict:error:;use appendTags: to "
  522 + "add tags, and delegete update to xgPushDidAppendTags:error:");
  523 +
  524 +/**
  525 + @brief 监控token对象identifiers解绑的情况
  526 +
  527 + @param identifiers token对象解绑的标识
  528 + @param type token对象解绑的类型
  529 + @param error token对象解绑的结果信息
  530 + */
  531 +- (void)xgPushDidUnbindWithIdentifiers:(nonnull NSArray *)identifiers
  532 + type:(XGPushTokenBindType)type
  533 + error:(nullable NSError *)error
  534 + __deprecated_msg("recommended to use delAccounts: to delete accounts,and delegete update to xgPushDidDelAccounts:error:; use delTags: to delete "
  535 + "tags, and delegete update to xgPushDidDelTags:error:");
  536 +
  537 +/**
  538 + @brief 监控token对象更新已绑定标识的情况
  539 +
  540 + @param identifiers token对象更新后的标识
  541 + @param type token对象更新类型
  542 + @param error token对象更新标识的结果信息
  543 + */
  544 +- (void)xgPushDidUpdatedBindedIdentifiers:(nonnull NSArray *)identifiers
  545 + bindType:(XGPushTokenBindType)type
  546 + error:(nullable NSError *)error
  547 + __deprecated_msg("recommended to use upsertAccountsByDict: to add accounts,and delegete update to xgPushDidUpsertAccountsByDict:error:; use "
  548 + "clearAndAppendTags: to clear and append tags, and delegete update to xgPushDidClearAndAppendTags:error:");
  549 +
  550 +/**
  551 + @brief 监控清除token对象绑定标识的情况
  552 +
  553 + @param type token对象清除的类型
  554 + @param error token对象清除标识的结果信息
  555 + */
  556 +- (void)xgPushDidClearAllIdentifiers:(XGPushTokenBindType)type
  557 + error:(nullable NSError *)error
  558 + __deprecated_msg("recommended to use clearAccounts to clear accounts,and delegete update to xgPushDidClearAccountsError:; use clearTags to clear "
  559 + "tags, and delegete update to xgPushDidClearTagsError:");
  560 +
  561 +@end
  562 +
  563 +#pragma mark - XGPushTokenManager,提供账号和标签的绑定与解绑操作
  564 +
  565 +@interface XGPushTokenManager : NSObject
  566 +
  567 +/**
  568 + @brief 创建设备token的管理对象,用来管理token的绑定与解绑操作
  569 +
  570 + @return 设备token管理对象
  571 + @note 此类的 APIs 调用都是以 Token 在TPNS服务上完成注册为前提
  572 + */
  573 +
  574 ++ (nonnull instancetype)defaultTokenManager;
  575 +
  576 +- (nonnull instancetype)init NS_UNAVAILABLE;
  577 +/**
  578 + @brief 设备token管理操作的代理对象
  579 + */
  580 +@property (weak, nonatomic, nullable) id<XGPushTokenManagerDelegate> delegate;
  581 +
  582 +/**
  583 + @brief 返回当前设备token的字符串,由苹果APNs生成
  584 + */
  585 +@property (copy, nonatomic, nullable, readonly) NSString *deviceTokenString;
  586 +
  587 +/**
  588 + @brief 返回当前TPNS 服务生成的token字符串
  589 + */
  590 +@property (copy, nonatomic, nullable, readonly) NSString *xgTokenString;
  591 +
  592 +#pragma mark - ********账号相关方法,TPNS SDK1.2.8.0+********
  593 +
  594 +/**
  595 + @brief 添加或更新账号(TPNS SDK1.2.9.0+)
  596 +
  597 + @param accountsDict 账号字典
  598 + @note 若原来没有该类型账号,则添加;若原来有,则覆盖
  599 + @note 账号类型和账号名称一起作为联合主键
  600 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  601 + @note 需要使用字典类型,key为账号类型,value为账号,示例:@{@(accountType):@"account"};
  602 + Objective-C的写法 : @{@(0):@"account0",@(1):@"account1"};
  603 + Swift的写法:[NSNumber(0):@"account0",NSNumber(1):@"account1"]
  604 + @note 账号类型详情可参考文档: https://cloud.tencent.com/document/product/548/50102
  605 + */
  606 +- (void)upsertAccountsByDict:(nonnull NSDictionary<NSNumber *, NSString *> *)accountsDict;
  607 +
  608 +/**
  609 + @brief 添加或更新用户手机号,等于调用upsertAccountsByDict:@{@(1002):@"具体手机号"}。(TPNS SDK1.3.2.0+)
  610 +
  611 + @param phoneNumber E.164标准,格式为+[国家或地区码][手机号],例如+8613711112222。SDK内部加密传输。
  612 + @note 若原来没有该手机号,则添加;若原来有,则覆盖
  613 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  614 + @note 如需要删除手机号,调用delAccountsByKeys:[[NSSet alloc] initWithObjects:@(1002), nil]
  615 + */
  616 +- (void)upsertPhoneNumber:(nonnull NSString *)phoneNumber;
  617 +
  618 +/**
  619 + @brief 删除账号(TPNS SDK1.2.9.0+)
  620 +
  621 + @param accountsKeys 账号类型组成的集合
  622 + @note 删除指定账号类型下的所有账号
  623 + @note 使用集合且key是固定要求
  624 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  625 + */
  626 +- (void)delAccountsByKeys:(nonnull NSSet<NSNumber *> *)accountsKeys;
  627 +
  628 +/**
  629 + @brief 清空已有账号(TPNS SDK1.2.8.0+)
  630 +
  631 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  632 + */
  633 +- (void)clearAccounts;
  634 +
  635 +#pragma mark - ********标签相关方法,TPNS SDK1.2.8.0+********
  636 +/**
  637 + @brief 添加标签((TPNS SDK1.2.8.0+)
  638 +
  639 + @param tags 标签数组
  640 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  641 + @note tags为标签字符串数组,最多不超过500个(标签字符串不允许有空格或者是tab字符,长度不超过50)
  642 + */
  643 +- (void)appendTags:(nonnull NSArray<NSString *> *)tags;
  644 +
  645 +/**
  646 + @brief 删除标签(TPNS SDK1.2.8.0+)
  647 +
  648 + @param tags 指定解绑标识,标签字符串不允许有空格或者是tab字符
  649 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用;若需要清除所有标识,建议使用 clearAllIdentifiers:;
  650 + @note tags为标签字符串数组,最多不超过500个(标签字符串不允许有空格或者是tab字符,长度不超过50)
  651 + */
  652 +- (void)delTags:(nonnull NSArray<NSString *> *)tags;
  653 +
  654 +/**
  655 + @brief 清空已有标签(TPNS SDK1.2.8.0+)
  656 +
  657 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  658 + */
  659 +- (void)clearTags;
  660 +
  661 +/**
  662 + @brief 清空已有标签,然后批量添加标签(TPNS SDK1.2.8.0+)
  663 +
  664 + @param tags 标签标识字符串数组,标签字符串不允许有空格或者是tab字符
  665 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  666 + @note tags为标签字符串数组,最多不超过500个(标签字符串不允许有空格或者是tab字符,长度不超过50)
  667 + */
  668 +- (void)clearAndAppendTags:(nonnull NSArray<NSString *> *)tags;
  669 +
  670 +/**
  671 + @brief 查询当前设备(tpns token为准)绑定的标签
  672 +
  673 + @param offset 此次查询的偏移大小
  674 + @param limit 此次查询的分页大小, 最大200
  675 + @note 举例:"limit 3 offset 1" 表示跳过1条数据,从第2条数据开始取,取3条数据,也就是取2,3,4三条数据
  676 + 举例: offset为0,则返回最新的标签集合
  677 + */
  678 +- (void)queryTags:(NSUInteger)offset limit:(NSUInteger)limit;
  679 +
  680 +#pragma mark - ********用户属性相关方法,个性化推送使用********
  681 +/**
  682 + @brief 添加或更新用户属性( key-value结构,若原来没有该key的用户属性value,则新增; 若原来有该key的用户属性value,则更新该value)(TPNS SDK1.2.8.0+)
  683 +
  684 + @param attributes 用户属性字符串字典,字符串不允许有空格或者是tab字符
  685 + @note 需要先在管理台配置用户属性的键,才能操作成功
  686 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  687 + @note 字符串不允许有空格或者是tab字符
  688 + @note 使用字典且key是固定要求,Objective-C的写法 : @{@"gender": @"Female", @"age": @"29"};Swift的写法:["gender":"Female", "age": "29"]
  689 + */
  690 +- (void)upsertAttributes:(nonnull NSDictionary<NSString *, NSString *> *)attributes;
  691 +/**
  692 + @brief 删除用户属性(TPNS SDK1.2.8.0+)
  693 +
  694 +@param attributeKeys 用户属性key组成的集合
  695 +
  696 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  697 + @note 需要先在管理台配置用户属性的键,才能操作成功
  698 + @note 字符串不允许有空格或者是tab字符
  699 + @note 使用集合且key是固定要求
  700 + */
  701 +- (void)delAttributes:(nonnull NSSet<NSString *> *)attributeKeys;
  702 +
  703 +/**
  704 + @brief 清空已有用户属性(TPNS SDK1.2.8.0+)
  705 +
  706 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  707 + */
  708 +- (void)clearAttributes;
  709 +
  710 +/**
  711 + @brief 清空已有用户属性,然后批量添加用户属性(TPNS SDK1.2.8.0+)
  712 +
  713 + @param attributes 用户属性字符串字典,字符串不允许有空格或者是tab字符
  714 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  715 + @note 需要先在管理台配置用户属性的键,才能操作成功
  716 + @note 字符串不允许有空格或者是tab字符
  717 + @note 使用字典且key是固定要求,Objective-C的写法 : @{@"gender": @"Female", @"age": @"29"};Swift的写法:["gender":"Female", "age": "29"]
  718 + */
  719 +- (void)clearAndAppendAttributes:(nonnull NSDictionary<NSString *, NSString *> *)attributes;
  720 +
  721 +#pragma mark - ********数据分析相关,需要集成XGMTACloud.framework********
  722 +/**
  723 +@brief 自定义事件上报
  724 +
  725 +@param eventID 事件ID
  726 +@param kvs 键值对,例如@{@"para1": @"value1" }
  727 +*/
  728 +- (void)trackCustomKeyValueEvent:(nonnull NSString *)eventID kvs:(nullable NSDictionary *)kvs;
  729 +
  730 +@end
  731 +
  732 +#pragma mark - XGNotificationAction,可以在通知栏中点击的事件对象
  733 +
  734 +/**
  735 + @brief 点击行为对象的属性配置
  736 +
  737 + - XGNotificationActionOptionNone: 无
  738 + - XGNotificationActionOptionAuthenticationRequired: 需要认证的选项
  739 + - XGNotificationActionOptionDestructive: 具有破坏意义的选项
  740 + - XGNotificationActionOptionForeground: 打开应用的选项
  741 + */
  742 +typedef NS_ENUM(NSUInteger, XGNotificationActionOptions) {
  743 + XGNotificationActionOptionNone = (0),
  744 + XGNotificationActionOptionAuthenticationRequired = (1 << 0),
  745 + XGNotificationActionOptionDestructive = (1 << 1),
  746 + XGNotificationActionOptionForeground = (1 << 2)
  747 +};
  748 +
  749 +/**
  750 + * @brief 定义了一个可以在通知栏中点击的事件对象
  751 + */
  752 +@interface XGNotificationAction : NSObject
  753 +
  754 +/**
  755 + @brief 在通知消息中创建一个可以点击的事件行为
  756 +
  757 + @param identifier 行为唯一标识
  758 + @param title 行为名称
  759 + @param options 行为支持的选项
  760 + @return 行为对象
  761 + @note 通知栏带有点击事件的特性,只有在iOS 8+、macOS 10.14+ 以上支持,iOS 8、macOS10.14 or earlier的版本,此方法返回空
  762 + */
  763 ++ (nullable id)actionWithIdentifier:(nonnull NSString *)identifier title:(nonnull NSString *)title options:(XGNotificationActionOptions)options;
  764 +
  765 +/**
  766 + @brief 点击行为的标识
  767 + */
  768 +@property (nonatomic, copy, readonly, nullable) NSString *identifier;
  769 +
  770 +/**
  771 + @brief 点击行为的标题
  772 + */
  773 +@property (nonatomic, copy, readonly, nullable) NSString *title;
  774 +
  775 +/**
  776 + @brief 点击行为的特性
  777 + */
  778 +@property (readonly, nonatomic) XGNotificationActionOptions options;
  779 +
  780 +@end
  781 +
  782 +#pragma mark - XGNotificationCategory,管理一组关联的Action,以实现不同分类对应不同的Actions
  783 +
  784 +/**
  785 + @brief 分类对象的属性配置
  786 +
  787 + - XGNotificationCategoryOptionNone: 无
  788 + - XGNotificationCategoryOptionCustomDismissAction: 发送消失事件给UNUserNotificationCenter(iOS 10+、macOS 10.14+ or later)对象
  789 + - XGNotificationCategoryOptionAllowInCarPlay: 允许CarPlay展示此类型的消息
  790 + */
  791 +typedef NS_OPTIONS(NSUInteger, XGNotificationCategoryOptions) {
  792 + XGNotificationCategoryOptionNone = (0),
  793 + XGNotificationCategoryOptionCustomDismissAction = (1 << 0),
  794 + XGNotificationCategoryOptionAllowInCarPlay = (1 << 1)
  795 +};
  796 +
  797 +/**
  798 + * 通知栏中消息指定的分类,分类主要用来管理一组关联的Action,以实现不同分类对应不同的Actions
  799 + */
  800 +@interface XGNotificationCategory : NSObject
  801 +
  802 +/**
  803 + @brief 创建分类对象,用以管理通知栏的Action对象
  804 +
  805 + @param identifier 分类对象的标识
  806 + @param actions 当前分类拥有的行为对象组
  807 + @param intentIdentifiers 用以表明可以通过Siri识别的标识
  808 + @param options 分类的特性
  809 + @return 管理点击行为的分类对象
  810 + @note 通知栏带有点击事件的特性,只有在iOS 8+ 、macOS 10.14+ 以上支持,iOS 8 、macOS 10.14 or earlier的版本,此方法返回空
  811 + */
  812 ++ (nullable id)categoryWithIdentifier:(nonnull NSString *)identifier
  813 + actions:(nullable NSArray<id> *)actions
  814 + intentIdentifiers:(nullable NSArray<NSString *> *)intentIdentifiers
  815 + options:(XGNotificationCategoryOptions)options;
  816 +
  817 +/**
  818 + @brief 分类对象的标识
  819 + */
  820 +@property (nonnull, readonly, copy, nonatomic) NSString *identifier;
  821 +
  822 +/**
  823 + @brief 分类对象拥有的点击行为组
  824 + */
  825 +@property (nonnull, readonly, copy, nonatomic) NSArray<XGNotificationAction *> *actions;
  826 +
  827 +/**
  828 + @brief 可用以Siri意图的标识组
  829 + */
  830 +@property (readonly, copy, nonatomic, nullable) NSArray<NSString *> *intentIdentifiers;
  831 +
  832 +/**
  833 + @brief 分类的特性
  834 + */
  835 +@property (readonly, nonatomic) XGNotificationCategoryOptions options;
  836 +
  837 +@end
  838 +
  839 +#pragma mark - XGNotificationConfigure,配置消息通知的样式和行为特性
  840 +
  841 +/**
  842 + @brief 注册通知支持的类型
  843 +
  844 + - XGUserNotificationTypeNone: 无
  845 + - XGUserNotificationTypeBadge: 支持应用角标
  846 + - XGUserNotificationTypeSound: 支持铃声
  847 + - XGUserNotificationTypeAlert: 支持弹框
  848 + - XGUserNotificationTypeCarPlay: 支持CarPlay,iOS 10.0+
  849 + - XGUserNotificationTypeCriticalAlert: 支持紧急提醒播放声音, iOS 12.0+
  850 + - XGUserNotificationTypeProvidesAppNotificationSettings: 让系统在应用内通知设置中显示按钮, iOS 12.0+
  851 + - XGUserNotificationTypeProvisional: 能够将非中断通知临时发布到 Notification Center, iOS 12.0+
  852 + - XGUserNotificationTypeNewsstandContentAvailability: 支持 Newsstand, iOS 3.0–8.0
  853 + */
  854 +typedef NS_OPTIONS(NSUInteger, XGUserNotificationTypes) {
  855 + XGUserNotificationTypeNone = (0),
  856 + XGUserNotificationTypeBadge = (1 << 0),
  857 + XGUserNotificationTypeSound = (1 << 1),
  858 + XGUserNotificationTypeAlert = (1 << 2),
  859 + XGUserNotificationTypeCarPlay = (1 << 3),
  860 + XGUserNotificationTypeCriticalAlert = (1 << 4),
  861 + XGUserNotificationTypeProvidesAppNotificationSettings = (1 << 5),
  862 + XGUserNotificationTypeProvisional = (1 << 6),
  863 + XGUserNotificationTypeNewsstandContentAvailability = (1 << 3)
  864 +};
  865 +
  866 +/**
  867 +@brief 管理推送消息通知栏的样式和特性
  868 +*/
  869 +@interface XGNotificationConfigure : NSObject
  870 +
  871 +/**
  872 + @brief 配置通知栏对象,主要是为了配置消息通知的样式和行为特性
  873 +
  874 + @param categories 通知栏中支持的分类集合
  875 + @param types 注册通知的样式
  876 + @return 配置对象
  877 + */
  878 ++ (nullable instancetype)configureNotificationWithCategories:(nullable NSSet<id> *)categories types:(XGUserNotificationTypes)types;
  879 +
  880 +- (nonnull instancetype)init NS_UNAVAILABLE;
  881 +/**
  882 + @brief 返回消息通知栏配置对象
  883 + */
  884 +@property (readonly, strong, nonatomic, nullable) NSSet<XGNotificationCategory *> *categories;
  885 +
  886 +/**
  887 + @brief 返回注册推送的样式类型
  888 + */
  889 +@property (readonly, nonatomic) XGUserNotificationTypes types;
  890 +
  891 +/**
  892 + @brief 默认的注册推送的样式类型
  893 + */
  894 +@property (readonly, nonatomic) XGUserNotificationTypes defaultTypes;
  895 +
  896 +@end
  897 +
  898 +#pragma mark - XGPush Deprecated
  899 +
  900 +/**
  901 + @brief 管理TPNS服务的对象,负责注册推送权限、消息的管理、调试模式的开关设置等
  902 + */
  903 +@interface XGPush (Deprecated)
  904 +
  905 +/**
  906 + @brief 返回TPNS服务的状态
  907 + */
  908 +@property (assign, readonly)
  909 + BOOL xgNotificationStatus __deprecated_msg("Instead, you should get the status by xgPushDidRegisteredDeviceToken:xgToken:error:");
  910 +
  911 +/**
  912 + @brief 设备在TPNS服务中的是否处于注册状态
  913 + */
  914 +@property (assign, readonly)
  915 + BOOL deviceDidRegisteredXG __deprecated_msg("Instead, you should get the status by xgPushDidRegisteredDeviceToken:xgToken:error:");
  916 +
  917 +/**
  918 + @brief 通过使用在TPNS官网注册的应用的信息,启动TPNS服务
  919 +
  920 + @param appID 通过TPNS管理台申请的 AccessID
  921 + @param appKey 通过TPNS管理台申请的 AccessKey
  922 + @param delegate 回调对象
  923 + @note 接口所需参数必须要正确填写,反之TPNS服务将不能正确为应用推送消息
  924 + */
  925 +- (void)startXGWithAppID:(uint32_t)appID
  926 + appKey:(nonnull NSString *)appKey
  927 + delegate:(nullable id<XGPushDelegate>)delegate __deprecated_msg("You should use startXGWithAccessID instead");
  928 +
  929 +#if TARGET_OS_IPHONE
  930 +- (void)reportXGNotificationInfo:(nonnull NSDictionary *)info __deprecated_msg("You should no longer call it, SDK handles it automatically.");
  931 +#endif
  932 +
  933 +/**
  934 + @brief 上报推送消息的用户行为
  935 +
  936 + @param response 用户行为
  937 + @note 此接口即统计推送消息中开发者预先设置或者是系统预置的行为标识,可以了解到用户是如何处理推送消息的,又统计消息的点击次数
  938 + */
  939 +- (void)reportXGNotificationResponse:(nullable UNNotificationResponse *)response __IOS_AVAILABLE(10.0)__OSX_AVAILABLE(10.14)
  940 + __deprecated_msg("You should no longer call it, SDK handles it automatically.");
  941 +
  942 +@end
  943 +
  944 +#pragma mark - XGPushTokenManager Deprecated
  945 +
  946 +@interface XGPushTokenManager (Deprecated)
  947 +
  948 +/**
  949 + @brief 创建设备token的管理对象,用来管理token的绑定与解绑操作
  950 +
  951 + @return 设备token管理对象
  952 + @note 此类的 APIs 调用都是以 Token 在TPNS服务上完成注册为前提
  953 + */
  954 +
  955 +#pragma mark - ********建议废弃的账号、标签相关方法********
  956 +
  957 +/**
  958 + @brief 清空已有账号,然后批量添加账号(TPNS SDK1.2.9.0+)
  959 +
  960 + @param accountsDict 账号字典
  961 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  962 + @note 需要使用字典类型,key为账号类型,value为账号,示例:@{@(accountType):@"account"};
  963 + Objective-C的写法 : @{@(0):@"account0",@(1):@"account1"};
  964 + Swift的写法:[NSNumber(0):@"account0",NSNumber(1):@"account1"]
  965 + */
  966 +- (void)clearAndAppendAccountsByDict:(nonnull NSDictionary<NSNumber *, NSString *> *)accountsDict
  967 + __deprecated_msg("recommended to use upsertAccountsByDict:");
  968 +
  969 +/**
  970 + @brief 添加账号(TPNS SDK1.2.8.0+)
  971 +
  972 + @param accounts 账号数组
  973 + @note 账号类型和账号名称一起作为联合主键
  974 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  975 + @note 对于账号操作,需要使用字典数组且key是固定要求,Objective-C的写法 : @[@{@"accountType":@(0),@"account":identifier}];
  976 + Swift的写法:[["accountType":NSNumber(0),"account":identifier]]
  977 + */
  978 +- (void)appendAccounts:(nonnull NSArray<NSDictionary *> *)accounts __deprecated_msg("recommended to use upsertAccountsByDict:");
  979 +
  980 +/**
  981 + @brief 删除账号(TPNS SDK1.2.9.0+)
  982 +
  983 + @param accounts 账号数组
  984 + @note 对于账号操作,需要使用字典数组且key是固定要求,Objective-C的写法 : @[@{@"accountType":@(0),@"account":identifier}];
  985 + Swift的写法:[["accountType":NSNumber(0),"account":identifier]]
  986 + */
  987 +- (void)delAccounts:(nonnull NSArray<NSDictionary *> *)accounts __deprecated_msg("recommended to use delAccountsByKeys:");
  988 +
  989 +/**
  990 + @brief 清空已有账号,然后批量添加账号(TPNS SDK1.2.8.0+)
  991 +
  992 + @param accounts 账号数组
  993 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  994 + @note 对于账号操作,需要使用字典数组且key是固定要求,Objective-C的写法 : @[@{@"accountType":@(0),@"account":identifier}];
  995 + Swift的写法:[["accountType":NSNumber(0),"account":identifier]]
  996 + */
  997 +- (void)clearAndAppendAccounts:(nonnull NSArray<NSDictionary *> *)accounts __deprecated_msg("recommended to use upsertAccountsByDict:");
  998 +
  999 +/**
  1000 + @brief 为token对象设置绑定类型和标识
  1001 +
  1002 + @param identifier 指定绑定标识
  1003 + @param type 指定绑定类型
  1004 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  1005 + @note 对于标签操作,标签字符串不允许有空格或者是tab字符
  1006 + */
  1007 +- (void)bindWithIdentifier:(nonnull NSString *)identifier
  1008 + type:(XGPushTokenBindType)type __deprecated_msg("recommended to use upsertAccountsByDict: or appendTags:");
  1009 +
  1010 +/**
  1011 + @brief 根据类型和标识为token对象解绑
  1012 +
  1013 + @param identifier 指定解绑标识
  1014 + @param type 指定解绑类型
  1015 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用;若需要清除所有标识,建议使用 clearAllIdentifiers:
  1016 + @note 对于标签操作,标签字符串不允许有空格或者是tab字符
  1017 + */
  1018 +- (void)unbindWithIdentifer:(nonnull NSString *)identifier
  1019 + type:(XGPushTokenBindType)type __deprecated_msg("recommended to use delAccounts: or delTags:");
  1020 +
  1021 +/**
  1022 + @brief 为token对象设置绑定类型和标识
  1023 +
  1024 + @param identifiers 指定绑定标识,标签字符串不允许有空格或者是tab字符
  1025 + @param type 指定绑定类型
  1026 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  1027 + @note 对于标签操作identifiers为标签字符串数组(标签字符串不允许有空格或者是tab字符)
  1028 + @note 对于账号操作,需要使用字典数组且key是固定要求,Objective-C的写法 : @[@{@"account":identifier, @"accountType":@(0)}];
  1029 + Swift的写法:[["account":identifier, "accountType":NSNumber(0)]]
  1030 + */
  1031 +- (void)bindWithIdentifiers:(nonnull NSArray *)identifiers
  1032 + type:(XGPushTokenBindType)type __deprecated_msg("recommended to use upsertAccountsByDict: or appendTags:");
  1033 +
  1034 +/**
  1035 + @brief 根据类型和标识为token对象解绑
  1036 +
  1037 + @param identifiers 指定解绑标识,标签字符串不允许有空格或者是tab字符
  1038 + @param type 指定解绑类型
  1039 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用;若需要清除所有标识,建议使用 clearAllIdentifiers:;
  1040 + @note 对于标签操作identifiers为标签字符串数组(标签字符串不允许有空格或者是tab字符)
  1041 + @note 对于账号操作,需要使用字典数组且key是固定要求,Objective-C的写法 : @[@{@"account":identifier, @"accountType":@(0)}];
  1042 + Swift的写法:[["account":identifier, "accountType":NSNumber(0)]]
  1043 + */
  1044 +- (void)unbindWithIdentifers:(nonnull NSArray *)identifiers
  1045 + type:(XGPushTokenBindType)type __deprecated_msg("recommended to use delAccounts: or delTags:");
  1046 +
  1047 +/**
  1048 + @brief 根据类型,覆盖原有的标识;若之前没有绑定标识,则会执行新增标识
  1049 +
  1050 + @param identifiers 标签标识字符串数组,标签字符串不允许有空格或者是tab字符
  1051 + @param type 标识类型
  1052 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  1053 + @note 对于标签操作,标签字符串不允许有空格或者是tab字符
  1054 + @note 对于账号操作,需要使用字典数组且key是固定要求,Objective-C的写法 : @[@{@"account":identifier, @"accountType":@(0)}];
  1055 + Swift的写法:[["account":identifier, "accountType":NSNumber(0)]]
  1056 + */
  1057 +- (void)updateBindedIdentifiers:(nonnull NSArray *)identifiers
  1058 + bindType:(XGPushTokenBindType)type __deprecated_msg("recommended to use upsertAccountsByDict: or clearAndAppendTags:");
  1059 +
  1060 +/**
  1061 + @brief 清除所有用户属性
  1062 +
  1063 + @note 此接口应该在xgPushDidRegisteredDeviceToken:xgToken:error:返回正确之后被调用
  1064 + */
  1065 +- (void)clearAllIdentifiers:(XGPushTokenBindType)type __deprecated_msg("recommended to use clearAccounts or clearTags");
  1066 +
  1067 +@end