|
| 1 | +unit Unit2; |
| 2 | + |
| 3 | +interface |
| 4 | + |
| 5 | +uses |
| 6 | + System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, |
| 7 | + FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, |
| 8 | + FMX.ScrollBox, FMX.Memo, FMX.Controls.Presentation, |
| 9 | + System.PushNotification, FMX.Edit |
| 10 | + {$IFDEF ANDROID},fmx.PushNotification.android {$ENDIF}{$IFDEF IOS},FMX.PushNotification.iOS{$ENDIF}; |
| 11 | + |
| 12 | +type |
| 13 | + TForm2 = class(TForm) |
| 14 | + ToolBar1: TToolBar; |
| 15 | + Memo1: TMemo; |
| 16 | + Button1: TButton; |
| 17 | + Edit1: TEdit; |
| 18 | + Label1: TLabel; |
| 19 | + procedure OnReceiveNotificationEvent(Sender: TObject; const ANotification : TPushServiceNotification); |
| 20 | + procedure OnServiceConnectionChange(Sender: TObject; AChange : TPushService.TChanges); |
| 21 | + procedure Button1Click(Sender: TObject); |
| 22 | + private |
| 23 | + { Private declarations } |
| 24 | + public |
| 25 | + { Public declarations } |
| 26 | + APushService : TPushService; |
| 27 | + AServiceConnection : TPushServiceConnection; |
| 28 | + end; |
| 29 | + |
| 30 | +var |
| 31 | + Form2: TForm2; |
| 32 | + |
| 33 | +implementation |
| 34 | +uses global; |
| 35 | +{$R *.fmx} |
| 36 | +procedure TForm2.Button1Click(Sender: TObject); |
| 37 | +var |
| 38 | + ADeviceID, AdeviceToken, push_key: String; |
| 39 | +begin |
| 40 | + {$IFDEF ANDROID} |
| 41 | + // Äëÿ Android |
| 42 | + APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM); |
| 43 | + APushService.AppProps[TPushService.TAppPropNames.GCMAppID] := 'FCM ID'; |
| 44 | + |
| 45 | + {$ENDIF}{$IFDEF IOS} |
| 46 | + // Äëÿ iOS |
| 47 | + APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS); |
| 48 | + {$ENDIF} |
| 49 | + |
| 50 | +AServiceConnection := TPushServiceConnection.Create(APushService); |
| 51 | +AServiceConnection.Active := True; |
| 52 | +AServiceConnection.OnChange := OnServiceConnectionChange; |
| 53 | +AServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent; |
| 54 | + |
| 55 | +ADeviceID := APushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; |
| 56 | +AdeviceToken := APushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; |
| 57 | +push_key:=Edit1.Text; |
| 58 | +Memo1.Lines.Add('ADeviceID: '+ADeviceID); |
| 59 | +Memo1.Lines.Add('AdeviceToken: '+AdeviceToken); |
| 60 | +Memo1.Lines.Add('push_key: '+push_key); |
| 61 | + if (ADeviceID <> '') AND (ADeviceToken <> '') then |
| 62 | + begin |
| 63 | + RegisterDevice(ADeviceID, ADeviceToken, push_key); |
| 64 | + end; |
| 65 | + |
| 66 | +end; |
| 67 | + /// Óñòðîéñòâà íå âñåãäà óñïåâàþò ïîëó÷èòü òîêåí, |
| 68 | +/// ïîýòîìó ïðè èçìåíåíèè ñîñòîÿíèÿ îïÿòü ïðîâåðÿåì òîêåí |
| 69 | +procedure TForm2.OnServiceConnectionChange(Sender: TObject; |
| 70 | + AChange : TPushService.TChanges); |
| 71 | +var |
| 72 | + ADeviceID, AdeviceToken, push_key: String; |
| 73 | +begin |
| 74 | + // Ïðè èçìåíèè ñîñòîÿíèÿ êîìïîíåíòà |
| 75 | +ADeviceID := APushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; |
| 76 | +AdeviceToken := APushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; |
| 77 | +push_key:=Edit1.Text; |
| 78 | + |
| 79 | + if (ADeviceID <> '') AND (ADeviceToken <> '') then |
| 80 | + begin |
| 81 | + RegisterDevice(ADeviceID, ADeviceToken, push_key); |
| 82 | + end; |
| 83 | +end; |
| 84 | +/// Ïðîöåäóðà âûâîäà ñîîáùåíèå ïðè ïîëó÷åíèè Push óâåäîìëåíèÿ îò ñåðâåðà |
| 85 | +procedure TForm2.OnReceiveNotificationEvent(Sender: TObject; |
| 86 | + const ANotification : TPushServiceNotification); |
| 87 | +var |
| 88 | + MessageText : string; |
| 89 | +begin |
| 90 | + // Ïîëó÷àåì òåêñò ñîîáùåíèÿ â çàâèñèìîñòè ëü ïëàòôîðìû |
| 91 | + {$ifdef ANDROID} |
| 92 | + MessageText := ANotification.DataObject.GetValue('message').Value; |
| 93 | + {$else} |
| 94 | + MessageText := ANotification.DataObject.GetValue('alert').Value; |
| 95 | + {$endif}; |
| 96 | + |
| 97 | + // Âûâîäèì ñîîáùåíèå |
| 98 | + ShowNotification(MessageText, 0); |
| 99 | +end; |
| 100 | +end. |
0 commit comments