├── PUSHTest.res
├── info.plist.TemplateiOS.xml
├── PUSHTest.dpr
├── Entitlement.TemplateiOS.xml
├── _clean.bat
├── README.md
├── .gitignore
├── uMain.fmx
├── AndroidManifest.template.xml
├── pushTest
├── push.php
├── api.php
└── common.php
├── uMain.pas
├── PUSHTest.deployproj
└── PUSHTest.dproj
/PUSHTest.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzaripov1990/PUSHTestFCM/HEAD/PUSHTest.res
--------------------------------------------------------------------------------
/info.plist.TemplateiOS.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <%VersionInfoPListKeys%>
6 | <%ExtraInfoPListKeys%>
7 |
8 |
9 |
--------------------------------------------------------------------------------
/PUSHTest.dpr:
--------------------------------------------------------------------------------
1 | program PUSHTest;
2 |
3 | uses
4 | System.StartUpCopy,
5 | FMX.Forms,
6 | uMain in 'uMain.pas' {FormMain};
7 |
8 | {$R *.res}
9 |
10 | begin
11 | Application.Initialize;
12 | Application.CreateForm(TFormMain, FormMain);
13 | Application.Run;
14 |
15 | end.
16 |
--------------------------------------------------------------------------------
/Entitlement.TemplateiOS.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <%getTaskAllowKey%>
6 | <%applicationIdentifier%>
7 | <%pushNotificationKey%>
8 | <%keychainAccessGroups%>
9 |
10 |
11 |
--------------------------------------------------------------------------------
/_clean.bat:
--------------------------------------------------------------------------------
1 | @ECHO OFF
2 | ECHO Cleaning...
3 |
4 | del /S %1*.str%2%3%4
5 | del /S %1*.rsm%2%3%4
6 | del /S %1*.lib%2%3%4
7 | del /S %1*.err%2%3%4
8 | del /S %1*.tds%2%3%4
9 | del /S %1*.hpp%2%3%4
10 | del /S %1*.obj%2%3%4
11 | del /S %1*.tds%2%3%4
12 | rem del /S %1*.map%2%3%4
13 | del /S %1*.drc%2%3%4
14 | del /S %1*.#*%2%3%4
15 | del /S %1*.csm%2%3%4
16 | del /S %1*.bpi%2%3%4
17 | del /S %1*.lib%2%3%4
18 | del /S %1*.ilc%2%3%4
19 | del /S %1*.ild%2%3%4
20 | del /S %1*.ilf%2%3%4
21 | del /S %1*.ils%2%3%4
22 | del /S %1*.cgi%2%3%4
23 | del /S %1*.drc%2%3%4
24 | del /S %1*.$*%2%3%4
25 | del /S %1*.dcu%2%3%4
26 | del /S %1*.bak%2%3%4
27 | del /S %1*.gid%2%3%4
28 | del /S %1*.fts%2%3%4
29 | del /S %1*.~*%2%3%4
30 | del /S %1*.dsk%2%3%4
31 | del /S %1*.ddp%2%3%4
32 | del /S %1*.bkm%2%3%4
33 | del /S %1*_orig_?.*%2%3%4
34 | del /S %1*.ressrc%2%3%4
35 | del /S %1*.cesettings%2%3%4
36 | del /S %1*.stat%2%3%4
37 | del /S %1*.identcache%2%3%4
38 | del /S %1*.local%2%3%4
39 |
40 | for /r . %%a in (__history\) do @if exist "%%a" rd /s /q "%%a"
41 | for /r . %%a in (__recovery\) do @if exist "%%a" rd /s /q "%%a"
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # PUSHTestFCM
2 | [FireMonkey] FCM Push test project
3 |
4 | ### Подготовка
5 | прочтите внимательно статьи
6 | * http://blog.rzaripov.kz/2017/02/firebase-android-ios.html
7 | * http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html
8 |
9 | ### Серверная часть
10 | ###### Поместите папку `pushTest` к себе на сервер, в корень сайта
11 | ###### настройте доступ к БД и параметры из консоли Firebase (файл `api.php`)
12 |
13 | ```
14 | $config['db']['host'] = "расположение БД"; // localhost
15 | $config['db']['name'] = "название БД";
16 | $config['db']['user'] = "пользователь";
17 | $config['db']['pass'] = "пароль к БД";
18 | $config['push']['server_key'] = "тут серверный ключ из консоли firebase";
19 | $config['app']['name'] = "название пакета приложения для IOS"; //com.embarcadero.PUSHTest
20 | ```
21 |
22 | ### Delphi/C++ Builder
23 | Измените процедуру регистрации `RegisterDevice` а именно укажите свой сервер в строке
24 | ```
25 | aHTTP.Get('http://ТУТ ВАШ СЕРВЕР/pushTest/api.php?method=saveToken&deviceID=' + FDeviceID + '&deviceToken=' +
26 | FDeviceToken + '&platform='{$IFDEF ANDROID} + 'ANDROID' {$ELSEIF defined(IOS)} + 'IOS' {$ENDIF});
27 | ```
28 | и также нужно указать идентификатор отправителя из консоли Firebase
29 | ```
30 | const
31 | FAndroidServerKey = 'идентификатор отправителя';
32 | ```
33 |
34 |
35 | Google Play - https://play.google.com/store/apps/details?id=kz.rzaripov.PushTest&hl=ru
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Uncomment these types if you want even more clean repository. But be careful.
2 | # It can make harm to an existing project source. Read explanations below.
3 | #
4 | # Resource files are binaries containing manifest, project icon and version info.
5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
6 | #*.res
7 | #
8 | # Type library file (binary). In old Delphi versions it should be stored.
9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
10 | #*.tlb
11 | #
12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
13 | # Uncomment this if you are not using diagrams or use newer Delphi version.
14 | #*.ddp
15 | #
16 | # Visual LiveBindings file. Added in Delphi XE2.
17 | # Uncomment this if you are not using LiveBindings Designer.
18 | #*.vlb
19 | #
20 | # Deployment Manager configuration file for your project. Added in Delphi XE2.
21 | # Uncomment this if it is not mobile development and you do not use remote debug feature.
22 | #*.deployproj
23 | #
24 | # C++ object files produced when C/C++ Output file generation is configured.
25 | # Uncomment this if you are not using external objects (zlib library for example).
26 | #*.obj
27 | #
28 |
29 | # Delphi compiler-generated binaries (safe to delete)
30 | *.exe
31 | *.dll
32 | *.bpl
33 | *.bpi
34 | *.dcp
35 | *.so
36 | *.apk
37 | *.drc
38 | *.map
39 | *.dres
40 | *.rsm
41 | *.tds
42 | *.dcu
43 | *.lib
44 | *.a
45 | *.o
46 | *.ocx
47 |
48 | # Delphi autogenerated files (duplicated info)
49 | *.cfg
50 | *.hpp
51 | *Resource.rc
52 |
53 | # Delphi local files (user-specific info)
54 | *.local
55 | *.identcache
56 | *.projdata
57 | *.tvsconfig
58 | *.dsk
59 |
60 | # Delphi history and backups
61 | __history/
62 | __recovery/
63 | *.~*
64 |
65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi)
66 | *.stat
67 |
--------------------------------------------------------------------------------
/uMain.fmx:
--------------------------------------------------------------------------------
1 | object FormMain: TFormMain
2 | Left = 0
3 | Top = 0
4 | ClientHeight = 480
5 | ClientWidth = 320
6 | Fill.Color = xFFEFEFEF
7 | Fill.Kind = Solid
8 | FormFactor.Width = 320
9 | FormFactor.Height = 480
10 | FormFactor.Devices = [Desktop]
11 | OnCreate = FormCreate
12 | DesignerMasterStyle = 3
13 | object rHeader: TRectangle
14 | Align = Top
15 | Fill.Color = xFF345B8A
16 | Sides = []
17 | Size.Width = 320.000000000000000000
18 | Size.Height = 50.000000000000000000
19 | Size.PlatformDefault = False
20 | object lbTitle: TLabel
21 | Align = Client
22 | StyledSettings = [Family, Style]
23 | Size.Width = 320.000000000000000000
24 | Size.Height = 50.000000000000000000
25 | Size.PlatformDefault = False
26 | TextSettings.Font.Size = 22.000000000000000000
27 | TextSettings.FontColor = claWhite
28 | TextSettings.HorzAlign = Center
29 | TextSettings.WordWrap = False
30 | Text = 'PUSH Test'
31 | end
32 | end
33 | object Text1: TText
34 | Align = Top
35 | Margins.Top = 10.000000000000000000
36 | Position.Y = 60.000000000000000000
37 | Size.Width = 320.000000000000000000
38 | Size.Height = 48.000000000000000000
39 | Size.PlatformDefault = False
40 | Text = #1058#1086#1082#1077#1085' '#1091#1089#1090#1088#1086#1081#1089#1090#1074#1072
41 | TextSettings.Font.Size = 18.000000000000000000
42 | object sbShare: TSpeedButton
43 | Align = Right
44 | IconTintColor = claBlack
45 | Position.X = 272.000000000000000000
46 | Size.Width = 48.000000000000000000
47 | Size.Height = 48.000000000000000000
48 | Size.PlatformDefault = False
49 | StyleLookup = 'actiontoolbutton'
50 | Text = 'ShowShareSheetAction1'
51 | OnClick = sbShareClick
52 | end
53 | object SpeedButton1: TSpeedButton
54 | Align = Left
55 | IconTintColor = claBlack
56 | Size.Width = 48.000000000000000000
57 | Size.Height = 48.000000000000000000
58 | Size.PlatformDefault = False
59 | StyleLookup = 'refreshtoolbutton'
60 | Text = 'SpeedButton1'
61 | OnClick = SpeedButton1Click
62 | end
63 | end
64 | object tToken: TText
65 | Align = Top
66 | AutoSize = True
67 | Position.Y = 108.000000000000000000
68 | Size.Width = 320.000000000000000000
69 | Size.Height = 50.000000000000000000
70 | Size.PlatformDefault = False
71 | end
72 | object ActionList1: TActionList
73 | Left = 104
74 | Top = 224
75 | object ShowShareSheetAction1: TShowShareSheetAction
76 | Category = 'Media Library'
77 | end
78 | end
79 | end
80 |
--------------------------------------------------------------------------------
/AndroidManifest.template.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 | <%uses-permission%>
12 |
14 |
16 |
17 |
18 |
19 |
27 |
28 | <%application-meta-data%>
29 | <%services%>
30 |
32 |
36 |
37 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | <%activity%>
55 | <%receivers%>
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/pushTest/push.php:
--------------------------------------------------------------------------------
1 | $appName, 'sandbox' => false,
19 | 'apns_tokens' => $token_arr);
20 |
21 | $ch = curl_init();
22 | curl_setopt_array($ch, array(
23 | CURLOPT_URL => $url,
24 | CURLOPT_POST => true,
25 | CURLOPT_HTTPHEADER => $headers,
26 | CURLOPT_RETURNTRANSFER => true,
27 | CURLOPT_SSL_VERIFYHOST => 0,
28 | CURLOPT_SSL_VERIFYPEER => false,
29 | CURLOPT_POSTFIELDS => json_encode($fields)
30 | ));
31 | $result = curl_exec($ch);
32 | curl_close($ch);
33 | if ($result === false) return false;
34 |
35 | $json = json_decode($result, true);
36 | $rows = [];
37 | for ($n = 0; $n < count($json['results']); $n++){
38 | if ($json['results'][$n]['status'] == "OK")
39 | $rows[$n] = $json['results'][$n]['registration_token'];
40 | }
41 | return $rows;
42 | }
43 |
44 | function pushSend($title, $text, $tokens, $server_key) {
45 | $url = 'https://fcm.googleapis.com/fcm/send';
46 | $headers = array('Authorization: key=' . $server_key,
47 | 'Content-Type: application/json');
48 |
49 | if (is_array($tokens))
50 | $fields['registration_ids'] = $tokens;
51 | else
52 | $fields['registration_ids'] = array($tokens);
53 |
54 | $fields['priority'] = 'high';
55 | $fields['notification'] = array('body' => $text, 'title' => $title, 'sound' => 'default');
56 | $fields['data'] = array('message' => $text, 'title' => $title);
57 |
58 | $ch = curl_init();
59 | curl_setopt_array($ch, array(
60 | CURLOPT_URL => $url,
61 | CURLOPT_POST => true,
62 | CURLOPT_HTTPHEADER => $headers,
63 | CURLOPT_RETURNTRANSFER => true,
64 | CURLOPT_SSL_VERIFYHOST => 0,
65 | CURLOPT_SSL_VERIFYPEER => false,
66 | CURLOPT_POSTFIELDS => json_encode($fields)
67 | ));
68 | $result = curl_exec($ch);
69 | curl_close($ch);
70 |
71 | if ($result === false) return false;
72 | $json = json_decode($result, true);
73 |
74 | if ($json['success'] == 0)
75 | return false;
76 | else
77 | return true;
78 | }
79 |
80 | function pushSendOver1000($title, $text, $tokens, $server_key) {
81 | $GlobalResult = true;
82 | $PacketResult = false;
83 | $Count_Success = 0;
84 | $DeviceCountMax = 1000;
85 | $DeviceCountIndex = 0;
86 | $DevicesTokenPacketArray = array();
87 | while ($DeviceCountIndex<=count($tokens)) {
88 | $DevicesTokenPacketArray = array_slice($tokens, $DeviceCountIndex, $DeviceCountMax);
89 | $PacketResult = pushSend($title, $text, $DevicesTokenPacketArray, $server_key);
90 | if ($PacketResult != true) $GlobalResult = false;
91 | $DeviceCountIndex = $DeviceCountIndex + $DeviceCountMax;
92 | }
93 | return $GlobalResult;
94 | }
95 |
96 | ?>
97 |
--------------------------------------------------------------------------------
/pushTest/api.php:
--------------------------------------------------------------------------------
1 | 0) {
68 | $tokens = apns2fcmToken($config['app']['name'], $tokens_I, $config['push']['server_key']);
69 | }
70 |
71 | # склеиваем массивы в единый для передачи в функцию pushSend
72 | $fcm_tokens = array_merge($tokens_A, $tokens);
73 | #print_r($fcm_tokens); //- проверить можно так, что содержит массив
74 |
75 | # ВАЖНО!
76 | # За один раз можно отправить только на 1000 токенов,
77 | # поэтому если зарегистрированных девайсов у вас много,
78 | # нужно будет разделить на несколько этапов
79 |
80 | # отправляем пуши в FCM
81 | if (pushSendOver1000($title, $text, $fcm_tokens, $config['push']['server_key'] ) === false)
82 | msgErr("Пуши не отправлены");
83 | else
84 | msgOK();
85 |
86 | } else
87 | msgErr("Такой метод не найден");
88 |
89 | ?>
90 |
--------------------------------------------------------------------------------
/uMain.pas:
--------------------------------------------------------------------------------
1 | unit uMain;
2 |
3 | {
4 | author: ZuBy
5 |
6 | https://github.com/rzaripov1990/PUSHTestFCM
7 |
8 | 2017
9 | }
10 |
11 | interface
12 |
13 | uses
14 | System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
15 | FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation,
16 | FMX.StdCtrls, FMX.Objects, System.Actions, FMX.ActnList, FMX.StdActns, FMX.MediaLibrary.Actions,
17 | System.JSON,
18 | System.Notification,
19 | System.PushNotification
20 | {$IFDEF ANDROID}, FMX.PushNotification.Android{$ENDIF}
21 | {$IFDEF IOS}, FMX.PushNotification.IOS{$ENDIF};
22 |
23 | type
24 | TFormMain = class(TForm)
25 | rHeader: TRectangle;
26 | lbTitle: TLabel;
27 | Text1: TText;
28 | tToken: TText;
29 | sbShare: TSpeedButton;
30 | ActionList1: TActionList;
31 | ShowShareSheetAction1: TShowShareSheetAction;
32 | SpeedButton1: TSpeedButton;
33 | procedure sbShareClick(Sender: TObject);
34 | procedure FormCreate(Sender: TObject);
35 | procedure SpeedButton1Click(Sender: TObject);
36 | private
37 | FDeviceID: string;
38 | FDeviceToken: string;
39 |
40 | FPushService: TPushService;
41 | FPushServiceConnection: TPushServiceConnection;
42 |
43 | procedure OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification);
44 | procedure OnServiceConnectionChange(Sender: TObject; AChange: TPushService.TChanges);
45 |
46 | { Private declarations }
47 | procedure PushServiceRegister;
48 |
49 | procedure RegisterDevice;
50 | public
51 | { Public declarations }
52 | end;
53 |
54 | var
55 | FormMain: TFormMain;
56 |
57 | implementation
58 |
59 | {$R *.fmx}
60 |
61 | uses
62 | System.Threading, System.Net.HTTPClient;
63 |
64 | const
65 | FAndroidServerKey = '63538920422';
66 |
67 | procedure ClearAllNotification;
68 | var
69 | aNotificationCenter: TNotificationCenter;
70 | begin
71 | aNotificationCenter := TNotificationCenter.Create(nil);
72 | try
73 | if aNotificationCenter.Supported then
74 | begin
75 | aNotificationCenter.ApplicationIconBadgeNumber := -1;
76 | aNotificationCenter.CancelAll;
77 | end;
78 | finally
79 | aNotificationCenter.DisposeOf;
80 | aNotificationCenter := nil;
81 | end;
82 | end;
83 |
84 | procedure TFormMain.FormCreate(Sender: TObject);
85 | begin
86 | ClearAllNotification;
87 | PushServiceRegister;
88 | end;
89 |
90 | procedure TFormMain.OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification);
91 | const
92 | FCMSignature = 'gcm.notification.body';
93 | GCMSignature = 'message';
94 | APNsSignature = 'alert';
95 | var
96 | aText: string;
97 | aObj: TJSONValue;
98 | begin
99 | // это событие срабатывает при открытом приложении
100 | {$IFDEF ANDROID}
101 | // устраняем ошибку с чтением текста уведомления,
102 | // если уведомление отправлено из консоли firebase
103 | // и не заполнены дополнительные поля (message, title)
104 | aObj := ANotification.DataObject.GetValue(GCMSignature);
105 | if aObj <> nil then
106 | aText := aObj.Value
107 | else
108 | aText := ANotification.DataObject.GetValue(FCMSignature).Value;
109 | {$ELSE}
110 | aObj := ANotification.DataObject.GetValue(APNsSignature);
111 | if aObj <> nil then
112 | aText := aObj.Value;
113 | {$ENDIF}
114 | ShowMessage(aText);
115 | end;
116 |
117 | procedure TFormMain.OnServiceConnectionChange(Sender: TObject; AChange: TPushService.TChanges);
118 | begin
119 | if (TPushService.TChange.DeviceToken in AChange) and Assigned(FPushServiceConnection) then
120 | begin
121 | FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID];
122 | FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];
123 |
124 | // тут отправляем в хранилище токенов (на сервер с БД например)
125 | RegisterDevice;
126 |
127 | tToken.Text := FDeviceToken;
128 | end;
129 | end;
130 |
131 | procedure TFormMain.PushServiceRegister;
132 | begin
133 | FPushService := nil;
134 | FPushServiceConnection := nil;
135 |
136 | {$IF defined(ANDROID)}
137 | FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM);
138 | FPushService.AppProps[TPushService.TAppPropNames.GCMAppID] := FAndroidServerKey;
139 | {$ENDIF}
140 | {$IF defined(IOS) AND defined(CPUARM)}
141 | FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS);
142 | {$ENDIF}
143 | if Assigned(FPushService) then
144 | begin
145 | FPushServiceConnection := TPushServiceConnection.Create(FPushService);
146 | FPushServiceConnection.OnChange := OnServiceConnectionChange;
147 | FPushServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;
148 | FPushServiceConnection.Active := true;
149 |
150 | FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID];
151 | FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];
152 |
153 | // тут отправляем в хранилище токенов (на сервер с БД например)
154 | RegisterDevice;
155 |
156 | tToken.Text := FDeviceToken;
157 | end;
158 | end;
159 |
160 | procedure TFormMain.RegisterDevice;
161 | begin
162 | TTask.Run(
163 | procedure
164 | var
165 | aHTTP: THTTPClient;
166 | begin
167 | aHTTP := THTTPClient.Create;
168 | try
169 | aHTTP.Get('http://rzaripov.kz/pushTest/api.php?method=saveToken&deviceID=' + FDeviceID + '&deviceToken=' +
170 | FDeviceToken + '&platform='{$IFDEF ANDROID} + 'ANDROID' {$ELSEIF defined(IOS)} + 'IOS' {$ENDIF});
171 | finally
172 | FreeAndNil(aHTTP);
173 | end;
174 | end);
175 | end;
176 |
177 | procedure TFormMain.sbShareClick(Sender: TObject);
178 | begin
179 | ShowShareSheetAction1.TextMessage := FDeviceToken;
180 | ShowShareSheetAction1.ExecuteTarget(sbShare);
181 | end;
182 |
183 | procedure TFormMain.SpeedButton1Click(Sender: TObject);
184 | begin
185 | tToken.Text := FDeviceToken;
186 | end;
187 |
188 | end.
189 |
--------------------------------------------------------------------------------
/pushTest/common.php:
--------------------------------------------------------------------------------
1 | $p) {
101 | $out_pos = $p2;
102 | return substr($str, $p+strlen($tag1), $p2-$p-strlen($tag1));
103 | } else {
104 | $out_pos = 0;
105 | return "";
106 | }
107 | }
108 |
109 | function request($url) {
110 | # получаем страницу по url
111 | $myCurl = curl_init();
112 | curl_setopt_array($myCurl,
113 | array(
114 | CURLOPT_URL => $url,
115 | CURLOPT_RETURNTRANSFER => true,
116 | CURLOPT_HEADER => false,
117 | )
118 | );
119 |
120 | $curl_resp = curl_exec($myCurl);
121 | $error = curl_errno($myCurl);
122 |
123 | if (!$error){
124 | curl_close($myCurl);
125 | return $curl_resp;
126 | } else {
127 | curl_close($myCurl);
128 | msgErr(curl_error($myCurl));
129 | }
130 | }
131 |
132 | function passGenerator($min = 6, $max = 9) {
133 | # генератор пароля
134 | $pass = '';
135 | $chars = "1234567890qwertyuioplkjhgfdsazxcvbnmMNBVCXZASDFGHJKLPOIUYTREWQ";
136 | $count_char_pass = rand($min, $max);
137 | for ($i = 0; $i < $count_char_pass; $i++) {
138 | $numberChar = rand(0, iconv_strlen($chars, 'UTF-8')-1);
139 | $pass .= $chars[$numberChar];
140 | }
141 | return $pass;
142 | }
143 |
144 | function uniqueStr() {
145 | # генерируется уникальная строка, в md5
146 | # используется для сохранения имён картинок / url
147 | return md5(rand(1000,9999).time());
148 | }
149 |
150 | // ** РАБОТАЕМ С MYSQL ********************************************************************
151 | function getLastID() {
152 | # возвращает последний добавленный ID в базу
153 | global $db; # так указываются глобальные переменные
154 | if (!$db)
155 | return msgErr("Коннект к базе не выполнен");
156 | else
157 | return mysqli_insert_id($db);
158 | }
159 |
160 | function selectQuery($sql) {
161 | # функция для SELECT запросов, возвращает массив данных
162 | global $db; # так указываются глобальные переменные
163 | if (!$db)
164 | return msgErr("Коннект к базе не выполнен");
165 | else {
166 | $result = mysqli_query($db, $sql) or msgErr(mysqli_error($db));
167 | $arr = array();
168 | if (mysqli_num_rows($result) > 0) {
169 | while($r = mysqli_fetch_assoc($result)) {
170 | $arr[] = $r;
171 | }
172 | }
173 | return $arr;
174 | }
175 | }
176 |
177 | function queryComplete($sql) {
178 | # функция для UPDATE/INSERT запросов
179 | # используется когда нужно просто получить положительный ответ выполнения запроса
180 | # отправляется сразу клиенту
181 | global $db; # так указываются глобальные переменные
182 | if (!$db)
183 | return msgErr("Коннект к базе не выполнен");
184 | else {
185 | $result = mysqli_query($db, $sql) or msgErr(mysqli_error($db));
186 | if (mysqli_affected_rows($db) > 0)
187 | msgOK();
188 | }
189 | }
190 |
191 | function queryResult($sql) {
192 | # функция для UPDATE/INSERT запросов
193 | # используется когда после запроса идут еще действия с проверкой IF ()
194 | global $db; # так указываются глобальные переменные
195 | if (!$db)
196 | return msgErr("Коннект к базе не выполнен");
197 | else {
198 | $result = mysqli_query($db, $sql) or msgErr(mysqli_error($db), true);
199 | if (mysqli_affected_rows($db) > 0)
200 | return true;
201 | else
202 | return false;
203 | }
204 | }
--------------------------------------------------------------------------------
/PUSHTest.deployproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 12
5 |
6 |
7 | 066ab2310ac64b09
8 |
9 |
10 | iPhone5
11 |
12 |
13 |
14 | PUSHTest.app\
15 | FM_ApplicationIcon_57x57.png
16 | iPhone_AppIcon57
17 | 0
18 |
19 |
20 | True
21 |
22 |
23 | PUSHTest.app\
24 | FM_ApplicationIcon_180x180.png
25 | iPhone_AppIcon180
26 | 0
27 |
28 |
29 | True
30 |
31 |
32 | PUSHTest.app\
33 | FM_SpotlightSearchIcon_80x80.png
34 | iPhone_Spotlight80
35 | 0
36 |
37 |
38 | True
39 |
40 |
41 | PUSHTest.app\
42 | FM_SettingIcon_29x29.png
43 | iPad_Setting29
44 | 0
45 |
46 |
47 | True
48 |
49 |
50 | PUSHTest.app\
51 | PUSHTest.armv7
52 | ProjectOutput_iOS32
53 | 0
54 |
55 |
56 | True
57 |
58 |
59 | PUSHTest.app\
60 | Info.plist
61 | ProjectiOSInfoPList
62 | 1
63 |
64 |
65 | True
66 |
67 |
68 | PUSHTest.app\
69 | FM_ApplicationIcon_114x114.png
70 | iPhone_AppIcon114
71 | 0
72 |
73 |
74 | True
75 |
76 |
77 | PUSHTest.app\
78 | Default-Landscape@2x.png
79 | iPad_Launch2048
80 | 1
81 |
82 |
83 | True
84 |
85 |
86 | PUSHTest.app\
87 | Default-736h@3x.png
88 | iPhone_Launch1242
89 | 0
90 |
91 |
92 | True
93 |
94 |
95 | PUSHTest.app\
96 | PUSHTest
97 | ProjectOutput
98 | 1
99 |
100 |
101 | True
102 | True
103 |
104 |
105 | PUSHTest.app\
106 | FM_ApplicationIcon_144x144.png
107 | iPad_AppIcon144
108 | 0
109 |
110 |
111 | True
112 |
113 |
114 | PUSHTest.app\
115 | FM_SpotlightSearchIcon_40x40.png
116 | iPhone_Spotlight40
117 | 0
118 |
119 |
120 | True
121 |
122 |
123 | PUSHTest.app\
124 | ResourceRules.plist
125 | ProjectiOSDeviceResourceRules
126 | 1
127 |
128 |
129 | True
130 |
131 |
132 | PUSHTest.app\
133 | FM_SettingIcon_58x58.png
134 | iPad_Setting58
135 | 0
136 |
137 |
138 | True
139 |
140 |
141 | PUSHTest.app\
142 | Default-Portrait@2x.png
143 | iPad_Launch1536
144 | 1
145 |
146 |
147 | True
148 |
149 |
150 | PUSHTest.app\
151 | FM_ApplicationIcon_87x87.png
152 | iPhone_AppIcon87
153 | 0
154 |
155 |
156 | True
157 |
158 |
159 | PUSHTest.app\
160 | Default~ipad.png
161 | iPad_Launch768
162 | 1
163 |
164 |
165 | True
166 |
167 |
168 | PUSHTest.app\
169 | Default-Landscape@2x~ipad.png
170 | iPad_Launch2048x1536
171 | 0
172 |
173 |
174 | True
175 |
176 |
177 | PUSHTest.app\
178 | Default-Landscape~ipad.png
179 | iPad_Launch1024x768
180 | 0
181 |
182 |
183 | True
184 |
185 |
186 | PUSHTest.app\
187 | Default-Portrait~ipad.png
188 | iPad_Launch768x1024
189 | 0
190 |
191 |
192 | True
193 |
194 |
195 | PUSHTest.app\
196 | FM_ApplicationIcon_60x60.png
197 | iPhone_AppIcon60
198 | 0
199 |
200 |
201 | True
202 |
203 |
204 | PUSHTest.app\..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF\
205 | PUSHTest
206 | ProjectiOSDeviceDebug
207 | 1
208 |
209 |
210 | True
211 |
212 |
213 | PUSHTest.app\
214 | FM_SpotlightSearchIcon_80x80.png
215 | iPad_SpotLight80
216 | 0
217 |
218 |
219 | True
220 |
221 |
222 | PUSHTest.app\
223 | FM_ApplicationIcon_76x76.png
224 | iPad_AppIcon76
225 | 0
226 |
227 |
228 | True
229 |
230 |
231 | PUSHTest.app\
232 | Default-568h@2x.png
233 | iPhone_Launch640x1136
234 | 1
235 |
236 |
237 | True
238 |
239 |
240 | PUSHTest.app\
241 | FM_ApplicationIcon_120x120.png
242 | iPhone_AppIcon120
243 | 0
244 |
245 |
246 | True
247 |
248 |
249 | PUSHTest.app\
250 | Default-Landscape.png
251 | iPad_Launch1024
252 | 1
253 |
254 |
255 | True
256 |
257 |
258 | PUSHTest.app\
259 | FM_SpotlightSearchIcon_50x50.png
260 | iPad_SpotLight50
261 | 0
262 |
263 |
264 | True
265 |
266 |
267 | PUSHTest.app\
268 | Default.png
269 | iPhone_Launch320
270 | 1
271 |
272 |
273 | True
274 |
275 |
276 | PUSHTest.app\
277 | Default-667h@2x.png
278 | iPhone_Launch750
279 | 0
280 |
281 |
282 | True
283 |
284 |
285 | PUSHTest.app\
286 | FM_ApplicationIcon_152x152.png
287 | iPad_AppIcon152
288 | 0
289 |
290 |
291 | True
292 |
293 |
294 | PUSHTest.app\
295 | FM_ApplicationIcon_72x72.png
296 | iPad_AppIcon72
297 | 0
298 |
299 |
300 | True
301 |
302 |
303 | PUSHTest.app\
304 | FM_SpotlightSearchIcon_29x29.png
305 | iPhone_Spotlight29
306 | 0
307 |
308 |
309 | True
310 |
311 |
312 | PUSHTest.app\
313 | FM_SpotlightSearchIcon_40x40.png
314 | iPad_SpotLight40
315 | 0
316 |
317 |
318 | True
319 |
320 |
321 | PUSHTest.app\
322 | FM_SpotlightSearchIcon_100x100.png
323 | iPad_SpotLight100
324 | 0
325 |
326 |
327 | True
328 |
329 |
330 | PUSHTest.app\
331 | Default-Landscape-736h@3x.png
332 | iPhone_Launch2208
333 | 0
334 |
335 |
336 | True
337 |
338 |
339 | PUSHTest.app\
340 | Default@2x.png
341 | iPhone_Launch640
342 | 1
343 |
344 |
345 | True
346 |
347 |
348 | PUSHTest.app\..\
349 | PUSHTest.entitlements
350 | ProjectiOSEntitlements
351 | 1
352 |
353 |
354 | True
355 |
356 |
357 | PUSHTest.app\
358 | FM_SpotlightSearchIcon_58x58.png
359 | iPhone_Spotlight58
360 | 0
361 |
362 |
363 | True
364 |
365 |
366 | PUSHTest.app\
367 | Default-Portrait@2x~ipad.png
368 | iPad_Launch1536x2048
369 | 0
370 |
371 |
372 | True
373 |
374 |
375 |
376 |
377 |
378 | PUSHTest.app\
379 | FM_SpotlightSearchIcon_50x50.png
380 | iPad_SpotLight50
381 | 0
382 |
383 |
384 | True
385 |
386 |
387 | PUSHTest.app\
388 | Default-568h@2x.png
389 | iPhone_Launch640x1136
390 | 1
391 |
392 |
393 | True
394 |
395 |
396 | PUSHTest.app\
397 | ResourceRules.plist
398 | ProjectiOSDeviceResourceRules
399 | 1
400 |
401 |
402 | True
403 |
404 |
405 | PUSHTest.app\
406 | FM_ApplicationIcon_57x57.png
407 | iPhone_AppIcon57
408 | 0
409 |
410 |
411 | True
412 |
413 |
414 | PUSHTest.app\..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF\
415 | PUSHTest
416 | ProjectiOSDeviceDebug
417 | 1
418 |
419 |
420 | True
421 |
422 |
423 | PUSHTest.app\
424 | FM_SettingIcon_58x58.png
425 | iPad_Setting58
426 | 0
427 |
428 |
429 | True
430 |
431 |
432 | PUSHTest.app\..\
433 | PUSHTest.entitlements
434 | ProjectiOSEntitlements
435 | 1
436 |
437 |
438 | True
439 |
440 |
441 | PUSHTest.app\
442 | PUSHTest
443 | ProjectOutput
444 | 1
445 |
446 |
447 | True
448 | True
449 |
450 |
451 | PUSHTest.app\
452 | FM_SpotlightSearchIcon_100x100.png
453 | iPad_SpotLight100
454 | 0
455 |
456 |
457 | True
458 |
459 |
460 | PUSHTest.app\
461 | FM_SettingIcon_29x29.png
462 | iPad_Setting29
463 | 0
464 |
465 |
466 | True
467 |
468 |
469 | PUSHTest.app\
470 | Default-Landscape.png
471 | iPad_Launch1024
472 | 1
473 |
474 |
475 | True
476 |
477 |
478 | PUSHTest.app\
479 | Default-667h@2x.png
480 | iPhone_Launch750
481 | 0
482 |
483 |
484 | True
485 |
486 |
487 | PUSHTest.app\
488 | FM_ApplicationIcon_76x76.png
489 | iPad_AppIcon76
490 | 0
491 |
492 |
493 | True
494 |
495 |
496 | PUSHTest.app\
497 | FM_SpotlightSearchIcon_40x40.png
498 | iPad_SpotLight40
499 | 0
500 |
501 |
502 | True
503 |
504 |
505 | PUSHTest.app\
506 | Info.plist
507 | ProjectiOSInfoPList
508 | 1
509 |
510 |
511 | True
512 |
513 |
514 | PUSHTest.app\
515 | FM_ApplicationIcon_114x114.png
516 | iPhone_AppIcon114
517 | 0
518 |
519 |
520 | True
521 |
522 |
523 | PUSHTest.app\
524 | FM_SpotlightSearchIcon_29x29.png
525 | iPhone_Spotlight29
526 | 0
527 |
528 |
529 | True
530 |
531 |
532 | PUSHTest.app\
533 | FM_ApplicationIcon_60x60.png
534 | iPhone_AppIcon60
535 | 0
536 |
537 |
538 | True
539 |
540 |
541 | PUSHTest.app\
542 | FM_ApplicationIcon_180x180.png
543 | iPhone_AppIcon180
544 | 0
545 |
546 |
547 | True
548 |
549 |
550 | PUSHTest.app\
551 | Default@2x.png
552 | iPhone_Launch640
553 | 1
554 |
555 |
556 | True
557 |
558 |
559 | PUSHTest.app\
560 | FM_SpotlightSearchIcon_40x40.png
561 | iPhone_Spotlight40
562 | 0
563 |
564 |
565 | True
566 |
567 |
568 | PUSHTest.app\
569 | FM_SpotlightSearchIcon_80x80.png
570 | iPhone_Spotlight80
571 | 0
572 |
573 |
574 | True
575 |
576 |
577 | PUSHTest.app\
578 | Default-736h@3x.png
579 | iPhone_Launch1242
580 | 0
581 |
582 |
583 | True
584 |
585 |
586 | PUSHTest.app\
587 | FM_SpotlightSearchIcon_80x80.png
588 | iPad_SpotLight80
589 | 0
590 |
591 |
592 | True
593 |
594 |
595 | PUSHTest.app\
596 | Default-Landscape~ipad.png
597 | iPad_Launch1024x768
598 | 0
599 |
600 |
601 | True
602 |
603 |
604 | PUSHTest.app\
605 | FM_ApplicationIcon_152x152.png
606 | iPad_AppIcon152
607 | 0
608 |
609 |
610 | True
611 |
612 |
613 | PUSHTest.app\
614 | Default-Portrait~ipad.png
615 | iPad_Launch768x1024
616 | 0
617 |
618 |
619 | True
620 |
621 |
622 | PUSHTest.app\
623 | Default.png
624 | iPhone_Launch320
625 | 1
626 |
627 |
628 | True
629 |
630 |
631 | PUSHTest.app\
632 | FM_ApplicationIcon_144x144.png
633 | iPad_AppIcon144
634 | 0
635 |
636 |
637 | True
638 |
639 |
640 | PUSHTest.app\
641 | Default-Portrait@2x.png
642 | iPad_Launch1536
643 | 1
644 |
645 |
646 | True
647 |
648 |
649 | PUSHTest.app\
650 | Default-Landscape-736h@3x.png
651 | iPhone_Launch2208
652 | 0
653 |
654 |
655 | True
656 |
657 |
658 | PUSHTest.app\
659 | FM_ApplicationIcon_87x87.png
660 | iPhone_AppIcon87
661 | 0
662 |
663 |
664 | True
665 |
666 |
667 | PUSHTest.app\
668 | Default-Landscape@2x~ipad.png
669 | iPad_Launch2048x1536
670 | 0
671 |
672 |
673 | True
674 |
675 |
676 | PUSHTest.app\
677 | FM_SpotlightSearchIcon_58x58.png
678 | iPhone_Spotlight58
679 | 0
680 |
681 |
682 | True
683 |
684 |
685 | PUSHTest.app\
686 | Default~ipad.png
687 | iPad_Launch768
688 | 1
689 |
690 |
691 | True
692 |
693 |
694 | PUSHTest.app\
695 | FM_ApplicationIcon_120x120.png
696 | iPhone_AppIcon120
697 | 0
698 |
699 |
700 | True
701 |
702 |
703 | PUSHTest.app\
704 | Default-Landscape@2x.png
705 | iPad_Launch2048
706 | 1
707 |
708 |
709 | True
710 |
711 |
712 | PUSHTest.app\
713 | FM_ApplicationIcon_72x72.png
714 | iPad_AppIcon72
715 | 0
716 |
717 |
718 | True
719 |
720 |
721 | PUSHTest.app\
722 | Default-Portrait@2x~ipad.png
723 | iPad_Launch1536x2048
724 | 0
725 |
726 |
727 | True
728 |
729 |
730 |
731 |
732 | PUSHTest\
733 | PUSHTest.exe
734 | ProjectOutput
735 | 0
736 |
737 |
738 | True
739 | True
740 |
741 |
742 |
743 |
744 | PUSHTest.app\Contents\MacOS\
745 | libcgsqlite3.dylib
746 | DependencyModule
747 | 1
748 |
749 |
750 | True
751 |
752 |
753 | PUSHTest.app\Contents\MacOS\
754 | libcgunwind.1.0.dylib
755 | DependencyModule
756 | 1
757 |
758 |
759 | True
760 |
761 |
762 |
763 |
764 | PUSHTest\library\lib\armeabi-v7a\
765 | libPUSHTest.so
766 | ProjectOutput
767 | 1
768 |
769 |
770 | True
771 | True
772 |
773 |
774 | PUSHTest\res\drawable-small\
775 | splash_image.png
776 | Android_SplashImage426
777 | 1
778 |
779 |
780 | True
781 |
782 |
783 | PUSHTest\library\lib\armeabi-v7a\
784 | gdbserver
785 | AndroidGDBServer
786 | 1
787 |
788 |
789 | True
790 |
791 |
792 | PUSHTest\res\drawable\
793 | splash_image_def.xml
794 | AndroidSplashImageDef
795 | 1
796 |
797 |
798 | True
799 |
800 |
801 | PUSHTest\res\drawable-normal\
802 | splash_image.png
803 | Android_SplashImage470
804 | 1
805 |
806 |
807 | True
808 |
809 |
810 | PUSHTest\res\values\
811 | styles.xml
812 | AndroidSplashStyles
813 | 1
814 |
815 |
816 | True
817 |
818 |
819 | PUSHTest\res\drawable-ldpi\
820 | ic_launcher.png
821 | Android_LauncherIcon36
822 | 1
823 |
824 |
825 | True
826 |
827 |
828 | PUSHTest\res\drawable-mdpi\
829 | ic_launcher.png
830 | Android_LauncherIcon48
831 | 1
832 |
833 |
834 | True
835 |
836 |
837 | PUSHTest\res\drawable-small\
838 | splash_image.png
839 | Android_SplashImage426
840 | 1
841 |
842 |
843 | True
844 |
845 |
846 | PUSHTest\res\drawable-large\
847 | splash_image.png
848 | Android_SplashImage640
849 | 1
850 |
851 |
852 | True
853 |
854 |
855 | PUSHTest\library\lib\armeabi\
856 | libPUSHTest.so
857 | AndroidLibnativeArmeabiFile
858 | 1
859 |
860 |
861 | True
862 |
863 |
864 | PUSHTest\res\drawable-mdpi\
865 | ic_launcher.png
866 | Android_LauncherIcon48
867 | 1
868 |
869 |
870 | True
871 |
872 |
873 | PUSHTest\classes\
874 | classes.dex
875 | AndroidClassesDexFile
876 | 1
877 |
878 |
879 | True
880 |
881 |
882 | PUSHTest\res\values\
883 | styles.xml
884 | AndroidSplashStyles
885 | 1
886 |
887 |
888 | True
889 |
890 |
891 | PUSHTest\res\drawable-xxhdpi\
892 | ic_launcher.png
893 | Android_LauncherIcon144
894 | 1
895 |
896 |
897 | True
898 |
899 |
900 | PUSHTest\res\drawable-large\
901 | splash_image.png
902 | Android_SplashImage640
903 | 1
904 |
905 |
906 | True
907 |
908 |
909 | PUSHTest\
910 | AndroidManifest.xml
911 | ProjectAndroidManifest
912 | 1
913 |
914 |
915 | True
916 |
917 |
918 | PUSHTest\res\drawable-ldpi\
919 | ic_launcher.png
920 | Android_LauncherIcon36
921 | 1
922 |
923 |
924 | True
925 |
926 |
927 | PUSHTest\res\drawable\
928 | splash_image_def.xml
929 | AndroidSplashImageDef
930 | 1
931 |
932 |
933 | True
934 |
935 |
936 | PUSHTest\res\drawable-hdpi\
937 | ic_launcher.png
938 | Android_LauncherIcon72
939 | 1
940 |
941 |
942 | True
943 |
944 |
945 | PUSHTest\library\lib\mips\
946 | libPUSHTest.so
947 | AndroidLibnativeMipsFile
948 | 1
949 |
950 |
951 | True
952 |
953 |
954 | PUSHTest\
955 | AndroidManifest.xml
956 | ProjectAndroidManifest
957 | 1
958 |
959 |
960 | True
961 |
962 |
963 | PUSHTest\library\lib\armeabi\
964 | libPUSHTest.so
965 | AndroidLibnativeArmeabiFile
966 | 1
967 |
968 |
969 | True
970 |
971 |
972 | PUSHTest\res\drawable-xxhdpi\
973 | ic_launcher.png
974 | Android_LauncherIcon144
975 | 1
976 |
977 |
978 | True
979 |
980 |
981 | PUSHTest\library\lib\mips\
982 | libPUSHTest.so
983 | AndroidLibnativeMipsFile
984 | 1
985 |
986 |
987 | True
988 |
989 |
990 | PUSHTest\res\drawable-xhdpi\
991 | ic_launcher.png
992 | Android_LauncherIcon96
993 | 1
994 |
995 |
996 | True
997 |
998 |
999 | PUSHTest\classes\
1000 | classes.dex
1001 | AndroidClassesDexFile
1002 | 1
1003 |
1004 |
1005 | True
1006 |
1007 |
1008 | PUSHTest\res\drawable-xlarge\
1009 | splash_image.png
1010 | Android_SplashImage960
1011 | 1
1012 |
1013 |
1014 | True
1015 |
1016 |
1017 | PUSHTest\res\drawable-xlarge\
1018 | splash_image.png
1019 | Android_SplashImage960
1020 | 1
1021 |
1022 |
1023 | True
1024 |
1025 |
1026 | PUSHTest\res\drawable-hdpi\
1027 | ic_launcher.png
1028 | Android_LauncherIcon72
1029 | 1
1030 |
1031 |
1032 | True
1033 |
1034 |
1035 | PUSHTest\library\lib\armeabi-v7a\
1036 | gdbserver
1037 | AndroidGDBServer
1038 | 1
1039 |
1040 |
1041 | True
1042 |
1043 |
1044 | PUSHTest\res\drawable-xhdpi\
1045 | ic_launcher.png
1046 | Android_LauncherIcon96
1047 | 1
1048 |
1049 |
1050 | True
1051 |
1052 |
1053 | PUSHTest\res\drawable-normal\
1054 | splash_image.png
1055 | Android_SplashImage470
1056 | 1
1057 |
1058 |
1059 | True
1060 |
1061 |
1062 | PUSHTest\library\lib\armeabi-v7a\
1063 | libPUSHTest.so
1064 | ProjectOutput
1065 | 1
1066 |
1067 |
1068 | True
1069 | True
1070 |
1071 |
1072 |
1073 |
1074 | PUSHTest.app\
1075 | libcgunwind.1.0.dylib
1076 | DependencyModule
1077 | 1
1078 |
1079 |
1080 | True
1081 |
1082 |
1083 | PUSHTest.app\
1084 | libPCRE.dylib
1085 | DependencyModule
1086 | 1
1087 |
1088 |
1089 | True
1090 |
1091 |
1092 |
1093 |
--------------------------------------------------------------------------------
/PUSHTest.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {19F53C9E-008E-493D-948A-EA39108CFB1F}
4 | 18.2
5 | FMX
6 | PUSHTest.dpr
7 | True
8 | Release
9 | Android
10 | 1119
11 | Application
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Base
29 | true
30 |
31 |
32 | true
33 | Base
34 | true
35 |
36 |
37 | true
38 | Base
39 | true
40 |
41 |
42 | true
43 | Base
44 | true
45 |
46 |
47 | true
48 | Base
49 | true
50 |
51 |
52 | true
53 | Base
54 | true
55 |
56 |
57 | true
58 | Cfg_1
59 | true
60 | true
61 |
62 |
63 | true
64 | Cfg_1
65 | true
66 | true
67 |
68 |
69 | true
70 | Cfg_1
71 | true
72 | true
73 |
74 |
75 | true
76 | Cfg_1
77 | true
78 | true
79 |
80 |
81 | true
82 | Base
83 | true
84 |
85 |
86 | true
87 | Cfg_2
88 | true
89 | true
90 |
91 |
92 | true
93 | Cfg_2
94 | true
95 | true
96 |
97 |
98 | true
99 | Cfg_2
100 | true
101 | true
102 |
103 |
104 | true
105 | Cfg_2
106 | true
107 | true
108 |
109 |
110 | true
111 | Cfg_2
112 | true
113 | true
114 |
115 |
116 | true
117 | true
118 | true
119 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)
120 | true
121 | true
122 | $(BDS)\bin\delphi_PROJECTICNS.icns
123 | true
124 | true
125 | true
126 | true
127 | true
128 | $(BDS)\bin\delphi_PROJECTICON.ico
129 | PUSHTest
130 | .\$(Platform)\$(Config)
131 | .\$(Platform)\$(Config)
132 | false
133 | false
134 | false
135 | false
136 | false
137 |
138 |
139 | android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar
140 | true
141 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png
142 | $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png
143 | DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;LockBoxDR;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;LockBox3DR;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)
144 | $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png
145 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png
146 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png
147 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png
148 | Debug
149 | package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
150 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png
151 | $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png
152 | $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png
153 |
154 |
155 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera
156 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png
157 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png
158 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png
159 | true
160 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png
161 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png
162 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png
163 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png
164 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png
165 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png
166 | $(MSBuildProjectName)
167 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png
168 | DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;LockBoxDR;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;LockBox3DR;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)
169 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png
170 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png
171 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png
172 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png
173 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png
174 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png
175 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png
176 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png
177 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png
178 | Debug
179 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png
180 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png
181 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png
182 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png
183 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png
184 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png
185 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png
186 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png
187 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png
188 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png
189 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png
190 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png
191 | iPhoneAndiPad
192 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png
193 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png
194 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png
195 |
196 |
197 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera
198 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png
199 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png
200 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png
201 | true
202 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png
203 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png
204 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png
205 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png
206 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png
207 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png
208 | $(MSBuildProjectName)
209 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png
210 | DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;TMSFMXWebGMapsPkgDXE10;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;LockBoxDR;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;LockBox3DR;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)
211 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png
212 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png
213 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png
214 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png
215 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png
216 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png
217 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png
218 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png
219 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png
220 | Debug
221 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png
222 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png
223 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png
224 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png
225 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png
226 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png
227 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png
228 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png
229 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png
230 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png
231 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png
232 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png
233 | iPhoneAndiPad
234 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png
235 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png
236 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png
237 |
238 |
239 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera
240 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png
241 | true
242 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png
243 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png
244 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png
245 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png
246 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png
247 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png
248 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png
249 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png
250 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png
251 | DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;LockBoxDR;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;LockBox3DR;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)
252 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png
253 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png
254 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png
255 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png
256 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png
257 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png
258 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png
259 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png
260 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png
261 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png
262 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png
263 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png
264 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png
265 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png
266 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png
267 | iPhoneAndiPad
268 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png
269 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png
270 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png
271 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png
272 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png
273 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png
274 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png
275 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png
276 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png
277 |
278 |
279 | true
280 | DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;FireDACIBDriver;fmx;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;LockBoxDR;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;fgx;DBXInformixDriver;LockBox3DR;IndyIPClient;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;fmxase;$(DCC_UsePackage)
281 | Debug
282 | CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts
283 |
284 |
285 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
286 | $(BDS)\bin\default_app.manifest
287 | DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;DataSnapFireDAC;svnui;tethering;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;DBXOracleDriver;inetdb;TMSFMXWebGMapsPkgDXE10;FmxTeeUI;emsedge;FireDACIBDriver;fmx;fmxdae;frx24;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;LockBoxDR;inet;bindcompdbx;IndyIPCommon;vcl;DBXSybaseASEDriver;IndyIPServer;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;frxTee24;CustomIPTransport;vcldsnap;bindcomp;appanalytics;fgx;DBXInformixDriver;pkgMaterialEdit;LockBox3DR;IndyIPClient;bindcompvcl;TeeUI;frxe24;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;frxDB24;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;fmxase;$(DCC_UsePackage)
288 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
289 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
290 | 1033
291 | Debug
292 | true
293 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
294 |
295 |
296 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
297 | $(BDS)\bin\default_app.manifest
298 | DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;DataSnapFireDAC;tethering;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;FireDACIBDriver;fmx;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;LockBoxDR;inet;bindcompdbx;IndyIPCommon;vcl;DBXSybaseASEDriver;IndyIPServer;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;fgx;DBXInformixDriver;LockBox3DR;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;fmxase;$(DCC_UsePackage)
299 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
300 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
301 | 1033
302 | Debug
303 | true
304 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
305 |
306 |
307 | DEBUG;$(DCC_Define)
308 | true
309 | false
310 | true
311 | true
312 | true
313 |
314 |
315 | false
316 | false
317 | false
318 | false
319 | 1
320 | false
321 | false
322 | false
323 | true
324 | false
325 |
326 |
327 | $(MSBuildProjectName)
328 | iPhoneAndiPad
329 | true
330 |
331 |
332 | true
333 | 1033
334 | true
335 | true
336 | false
337 |
338 |
339 | true
340 | true
341 |
342 |
343 | false
344 | RELEASE;$(DCC_Define)
345 | 0
346 | 0
347 |
348 |
349 | false
350 | false
351 | false
352 | false
353 | 1
354 | false
355 | false
356 | false
357 | true
358 | false
359 |
360 |
361 | iPhoneAndiPad
362 | com.embarcadero.$(ModuleName)
363 | iPhone Developer: Zair Ashirov (SJTTP9ST3S)
364 | False
365 | 77fb7980-68a7-413c-820c-d052ebe5dd56
366 | False
367 | true
368 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=com.embarcadero.$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=KVRWFQ9L67;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=true;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera
369 |
370 |
371 | iPhone Developer: Zair Ashirov (SJTTP9ST3S)
372 | False
373 | 77fb7980-68a7-413c-820c-d052ebe5dd56
374 | False
375 | true
376 | iPhoneAndiPad
377 | com.embarcadero.$(ModuleName)
378 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=com.embarcadero.$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=KVRWFQ9L67;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=true;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera
379 | true
380 |
381 |
382 | true
383 | true
384 |
385 |
386 | true
387 | true
388 |
389 |
390 |
391 | MainSource
392 |
393 |
394 |
395 | fmx
396 |
397 |
398 | Cfg_2
399 | Base
400 |
401 |
402 | Base
403 |
404 |
405 | Cfg_1
406 | Base
407 |
408 |
409 |
410 | Delphi.Personality.12
411 | Application
412 |
413 |
414 |
415 | PUSHTest.dpr
416 |
417 |
418 | TMS FMX WebGMaps Designtime
419 | Microsoft Office 2000 Sample Automation Server Wrapper Components
420 | Microsoft Office XP Sample Automation Server Wrapper Components
421 |
422 |
423 |
424 |
425 |
426 | true
427 |
428 |
429 |
430 |
431 | libPUSHTest.so
432 | true
433 |
434 |
435 |
436 |
437 | Default-568h@2x.png
438 | true
439 |
440 |
441 |
442 |
443 | true
444 |
445 |
446 |
447 |
448 | true
449 |
450 |
451 |
452 |
453 | splash_image.png
454 | true
455 |
456 |
457 |
458 |
459 | ResourceRules.plist
460 | true
461 |
462 |
463 |
464 |
465 | true
466 |
467 |
468 |
469 |
470 | PUSHTest
471 | true
472 |
473 |
474 |
475 |
476 | true
477 |
478 |
479 |
480 |
481 | true
482 |
483 |
484 |
485 |
486 | true
487 |
488 |
489 |
490 |
491 | PUSHTest
492 | true
493 |
494 |
495 |
496 |
497 | true
498 |
499 |
500 |
501 |
502 | true
503 |
504 |
505 |
506 |
507 | true
508 |
509 |
510 |
511 |
512 | true
513 |
514 |
515 |
516 |
517 | true
518 |
519 |
520 |
521 |
522 | true
523 |
524 |
525 |
526 |
527 | PUSHTest.armv7
528 | true
529 |
530 |
531 |
532 |
533 | Info.plist
534 | true
535 |
536 |
537 |
538 |
539 | true
540 |
541 |
542 |
543 |
544 | true
545 |
546 |
547 |
548 |
549 | Default-Landscape@2x.png
550 | true
551 |
552 |
553 |
554 |
555 | Default-Landscape.png
556 | true
557 |
558 |
559 |
560 |
561 | PUSHTest
562 | true
563 |
564 |
565 |
566 |
567 | true
568 |
569 |
570 |
571 |
572 | true
573 |
574 |
575 |
576 |
577 | true
578 |
579 |
580 |
581 |
582 | Default-736h@3x.png
583 | true
584 |
585 |
586 |
587 |
588 | Default-667h@2x.png
589 | true
590 |
591 |
592 |
593 |
594 | true
595 |
596 |
597 |
598 |
599 | Info.plist
600 | true
601 |
602 |
603 |
604 |
605 | splash_image.png
606 | true
607 |
608 |
609 |
610 |
611 | true
612 |
613 |
614 |
615 |
616 | ResourceRules.plist
617 | true
618 |
619 |
620 |
621 |
622 | true
623 |
624 |
625 |
626 |
627 | true
628 |
629 |
630 |
631 |
632 | ic_launcher.png
633 | true
634 |
635 |
636 |
637 |
638 | true
639 |
640 |
641 |
642 |
643 | true
644 |
645 |
646 |
647 |
648 | Default-Portrait@2x.png
649 | true
650 |
651 |
652 |
653 |
654 | classes.dex
655 | true
656 |
657 |
658 |
659 |
660 | true
661 |
662 |
663 |
664 |
665 | Default@2x.png
666 | true
667 |
668 |
669 |
670 |
671 | true
672 |
673 |
674 |
675 |
676 | Default~ipad.png
677 | true
678 |
679 |
680 |
681 |
682 | Default-Landscape@2x~ipad.png
683 | true
684 |
685 |
686 |
687 |
688 | Default-Landscape~ipad.png
689 | true
690 |
691 |
692 |
693 |
694 | Default-Portrait~ipad.png
695 | true
696 |
697 |
698 |
699 |
700 | true
701 |
702 |
703 |
704 |
705 | PUSHTest
706 | true
707 |
708 |
709 |
710 |
711 | true
712 |
713 |
714 |
715 |
716 | ic_launcher.png
717 | true
718 |
719 |
720 |
721 |
722 | true
723 |
724 |
725 |
726 |
727 | true
728 |
729 |
730 |
731 |
732 | true
733 |
734 |
735 |
736 |
737 | Default-736h@3x.png
738 | true
739 |
740 |
741 |
742 |
743 | ic_launcher.png
744 | true
745 |
746 |
747 |
748 |
749 | true
750 |
751 |
752 |
753 |
754 | Default-Landscape~ipad.png
755 | true
756 |
757 |
758 |
759 |
760 | Default-568h@2x.png
761 | true
762 |
763 |
764 |
765 |
766 | true
767 |
768 |
769 |
770 |
771 | Default-Landscape.png
772 | true
773 |
774 |
775 |
776 |
777 | libPUSHTest.so
778 | true
779 |
780 |
781 |
782 |
783 | true
784 |
785 |
786 |
787 |
788 | true
789 |
790 |
791 |
792 |
793 | Default-Portrait~ipad.png
794 | true
795 |
796 |
797 |
798 |
799 | Default.png
800 | true
801 |
802 |
803 |
804 |
805 | Default.png
806 | true
807 |
808 |
809 |
810 |
811 | true
812 |
813 |
814 |
815 |
816 | true
817 |
818 |
819 |
820 |
821 | libPUSHTest.so
822 | true
823 |
824 |
825 |
826 |
827 | ic_launcher.png
828 | true
829 |
830 |
831 |
832 |
833 | Default-Portrait@2x.png
834 | true
835 |
836 |
837 |
838 |
839 | ic_launcher.png
840 | true
841 |
842 |
843 |
844 |
845 | Default-Landscape-736h@3x.png
846 | true
847 |
848 |
849 |
850 |
851 | Default-667h@2x.png
852 | true
853 |
854 |
855 |
856 |
857 | true
858 |
859 |
860 |
861 |
862 | true
863 |
864 |
865 |
866 |
867 | true
868 |
869 |
870 |
871 |
872 | Default-Landscape@2x~ipad.png
873 | true
874 |
875 |
876 |
877 |
878 | true
879 |
880 |
881 |
882 |
883 | splash_image.png
884 | true
885 |
886 |
887 |
888 |
889 | PUSHTest.exe
890 | true
891 |
892 |
893 |
894 |
895 | Default~ipad.png
896 | true
897 |
898 |
899 |
900 |
901 | true
902 |
903 |
904 |
905 |
906 | true
907 |
908 |
909 |
910 |
911 | true
912 |
913 |
914 |
915 |
916 | true
917 |
918 |
919 |
920 |
921 | true
922 |
923 |
924 |
925 |
926 | true
927 |
928 |
929 |
930 |
931 | Default-Landscape-736h@3x.png
932 | true
933 |
934 |
935 |
936 |
937 | splash_image.png
938 | true
939 |
940 |
941 |
942 |
943 | Default@2x.png
944 | true
945 |
946 |
947 |
948 |
949 | Default-Landscape@2x.png
950 | true
951 |
952 |
953 |
954 |
955 | true
956 |
957 |
958 |
959 |
960 | true
961 |
962 |
963 |
964 |
965 | true
966 |
967 |
968 |
969 |
970 | Default-Portrait@2x~ipad.png
971 | true
972 |
973 |
974 |
975 |
976 | Default-Portrait@2x~ipad.png
977 | true
978 |
979 |
980 |
981 |
982 | 1
983 |
984 |
985 | 1
986 |
987 |
988 |
989 |
990 | Contents\Resources
991 | 1
992 |
993 |
994 |
995 |
996 | classes
997 | 1
998 |
999 |
1000 |
1001 |
1002 | Contents\MacOS
1003 | 0
1004 |
1005 |
1006 | 1
1007 |
1008 |
1009 | Contents\MacOS
1010 | 1
1011 |
1012 |
1013 |
1014 |
1015 | 1
1016 |
1017 |
1018 | 1
1019 |
1020 |
1021 | 1
1022 |
1023 |
1024 |
1025 |
1026 | res\drawable-xxhdpi
1027 | 1
1028 |
1029 |
1030 |
1031 |
1032 | library\lib\mips
1033 | 1
1034 |
1035 |
1036 |
1037 |
1038 | 1
1039 |
1040 |
1041 | 1
1042 |
1043 |
1044 | 0
1045 |
1046 |
1047 | 1
1048 |
1049 |
1050 | Contents\MacOS
1051 | 1
1052 |
1053 |
1054 | library\lib\armeabi-v7a
1055 | 1
1056 |
1057 |
1058 | 1
1059 |
1060 |
1061 |
1062 |
1063 | 0
1064 |
1065 |
1066 | Contents\MacOS
1067 | 1
1068 | .framework
1069 |
1070 |
1071 |
1072 |
1073 | 1
1074 |
1075 |
1076 | 1
1077 |
1078 |
1079 |
1080 |
1081 | 1
1082 |
1083 |
1084 | 1
1085 |
1086 |
1087 | 1
1088 |
1089 |
1090 |
1091 |
1092 | 1
1093 |
1094 |
1095 | 1
1096 |
1097 |
1098 | 1
1099 |
1100 |
1101 |
1102 |
1103 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
1104 | 1
1105 |
1106 |
1107 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
1108 | 1
1109 |
1110 |
1111 |
1112 |
1113 | 1
1114 |
1115 |
1116 | 1
1117 |
1118 |
1119 | 1
1120 |
1121 |
1122 |
1123 |
1124 | 1
1125 |
1126 |
1127 | 1
1128 |
1129 |
1130 | 1
1131 |
1132 |
1133 |
1134 |
1135 | library\lib\armeabi
1136 | 1
1137 |
1138 |
1139 |
1140 |
1141 | 0
1142 |
1143 |
1144 | 1
1145 |
1146 |
1147 | Contents\MacOS
1148 | 1
1149 |
1150 |
1151 |
1152 |
1153 | 1
1154 |
1155 |
1156 | 1
1157 |
1158 |
1159 | 1
1160 |
1161 |
1162 |
1163 |
1164 | res\drawable-normal
1165 | 1
1166 |
1167 |
1168 |
1169 |
1170 | res\drawable-xhdpi
1171 | 1
1172 |
1173 |
1174 |
1175 |
1176 | res\drawable-large
1177 | 1
1178 |
1179 |
1180 |
1181 |
1182 | 1
1183 |
1184 |
1185 | 1
1186 |
1187 |
1188 | 1
1189 |
1190 |
1191 |
1192 |
1193 | Assets
1194 | 1
1195 |
1196 |
1197 | Assets
1198 | 1
1199 |
1200 |
1201 |
1202 |
1203 | ..\
1204 | 1
1205 |
1206 |
1207 | ..\
1208 | 1
1209 |
1210 |
1211 |
1212 |
1213 | res\drawable-hdpi
1214 | 1
1215 |
1216 |
1217 |
1218 |
1219 | library\lib\armeabi-v7a
1220 | 1
1221 |
1222 |
1223 |
1224 |
1225 | Contents
1226 | 1
1227 |
1228 |
1229 |
1230 |
1231 | ..\
1232 | 1
1233 |
1234 |
1235 |
1236 |
1237 | Assets
1238 | 1
1239 |
1240 |
1241 | Assets
1242 | 1
1243 |
1244 |
1245 |
1246 |
1247 | 1
1248 |
1249 |
1250 | 1
1251 |
1252 |
1253 | 1
1254 |
1255 |
1256 |
1257 |
1258 | res\values
1259 | 1
1260 |
1261 |
1262 |
1263 |
1264 | res\drawable-small
1265 | 1
1266 |
1267 |
1268 |
1269 |
1270 | res\drawable
1271 | 1
1272 |
1273 |
1274 |
1275 |
1276 | 1
1277 |
1278 |
1279 | 1
1280 |
1281 |
1282 | 1
1283 |
1284 |
1285 |
1286 |
1287 | 1
1288 |
1289 |
1290 |
1291 |
1292 | res\drawable
1293 | 1
1294 |
1295 |
1296 |
1297 |
1298 | 0
1299 |
1300 |
1301 | 0
1302 |
1303 |
1304 | Contents\Resources\StartUp\
1305 | 0
1306 |
1307 |
1308 | 0
1309 |
1310 |
1311 | 0
1312 |
1313 |
1314 | 0
1315 |
1316 |
1317 |
1318 |
1319 | library\lib\armeabi-v7a
1320 | 1
1321 |
1322 |
1323 |
1324 |
1325 | 0
1326 | .bpl
1327 |
1328 |
1329 | 1
1330 | .dylib
1331 |
1332 |
1333 | Contents\MacOS
1334 | 1
1335 | .dylib
1336 |
1337 |
1338 | 1
1339 | .dylib
1340 |
1341 |
1342 | 1
1343 | .dylib
1344 |
1345 |
1346 |
1347 |
1348 | res\drawable-mdpi
1349 | 1
1350 |
1351 |
1352 |
1353 |
1354 | res\drawable-xlarge
1355 | 1
1356 |
1357 |
1358 |
1359 |
1360 | res\drawable-ldpi
1361 | 1
1362 |
1363 |
1364 |
1365 |
1366 | 0
1367 | .dll;.bpl
1368 |
1369 |
1370 | 1
1371 | .dylib
1372 |
1373 |
1374 | Contents\MacOS
1375 | 1
1376 | .dylib
1377 |
1378 |
1379 | 1
1380 | .dylib
1381 |
1382 |
1383 | 1
1384 | .dylib
1385 |
1386 |
1387 |
1388 |
1389 |
1390 |
1391 |
1392 |
1393 |
1394 |
1395 |
1396 |
1397 | True
1398 | True
1399 | True
1400 | True
1401 | True
1402 | True
1403 | True
1404 |
1405 |
1406 | 12
1407 |
1408 |
1409 |
1410 |
1411 |
1412 |
--------------------------------------------------------------------------------