![]() |
|
iOS Bildirim hakkında - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7) +--- Konu Başlığı: iOS Bildirim hakkında (/showthread.php?tid=8038) Sayfalar:
1
2
|
Cvp: iOS Bildirim hakkında - RAD Coder - 31-01-2025 (30-01-2025, Saat: 18:11)barissagir Adlı Kullanıcıdan Alıntı:(30-01-2025, Saat: 17:03)RAD Coder Adlı Kullanıcıdan Alıntı: Sorunun çözümü zorlaşıyor. FCM için Kastri bileşen setini kullanmışsınız (PromisesObjC Hatası). Delphi sürümü veya FirebaseSDK sürümü (bu bileşen firebase sdk'yı manuel kurduruyor) uyumsuz. Delphi sürümünüze uygun bir FirebaseSDk kurmalısınız yada harici bileşen kullanmayın. Delphi'inin kendi kütüphaneleri ile işlem yapın. Delphi bileşenleri Firebase IOS SDK kullanmaz. PAServer aracılığıyla doğrudan macOS/XCode üzerinden lokale alır ve kullanır. Kastri ile devam edecekseniz; bu sorunu kendisine bildirebilirsiniz (DrlphiWorlds). iOS Bildirim hakkında - barissagir - 31-01-2025 Cevaplariniz icin cok tesekkur ederim. Ben herseyi sifirdan kurarak yeniden deneyeyim. Cvp: iOS Bildirim hakkında - barissagir - 31-01-2025 (31-01-2025, Saat: 09:20)RAD Coder Adlı Kullanıcıdan Alıntı:(30-01-2025, Saat: 18:11)barissagir Adlı Kullanıcıdan Alıntı: Hayir hocam. Aynı hatayı aliyorum. Uses kismindan ios firebase kutuphanesini kaldirinca sorun cozuluyor ama ekleyince hata veriyor. merhabalar, Hocam Delphide yeni bir proje oluşturdum. Tüm sertifika işlerini yeniden yaptım. Yeni uygulamada o hatayı artık almıyorum. Programı iphonumda çalıştırdım ve Cihaz tokenını aldım. şimdi FireBase sayfasından Test mesajı gönderiyorum ama gelen bişey yok. Başka ne eksik olabilir? iOS Bildirim hakkında - mrmarman - 01-02-2025 Merhabalar Şöyle bir google taraması yaptım, bende ios yok. Apple Developer'daki Team ID (prefix) projenizdeki ile aynı mı kontrol etmek isteyebilirsiniz diyor. Umarım işe yarar bir bilgidir. Cvp: iOS Bildirim hakkında - Mr.X - 01-02-2025 Merhaba, IOS tarafında elde ettiğiniz token bilgisi 64 karakter uzunluğunda olmalı. Bunu FCM için uygun hale getirmeniz gerekir. Daha önce burada php tarafında yapmıştım. https://www.delphican.com/showthread.php?tid=7866&pid=56130#pid56130 Cvp: iOS Bildirim hakkında - barissagir - 01-02-2025 Merhabalar, yorumlarınız çok teşekkür ederim. Muammer hocam, Sanırım çözüm Serhat beyin dediği gibi, ios ta ki gelen tokenın APN token muş. Onu AccessToken ile birlikte kullanıp registration_token u bulmak lazım. Serhat bey PHP kodunda bunu yapmış. (ama ben kullanmayı beceremedim Sanırım aşağıdaki kod örneğini delphiye aktarabilirsem sorunu çözmüş olacağım. Örnek POST isteği
https://iid.googleapis.com/iid/v1:batchImport
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
access_token_auth:true
{
"application": "com.google.FCMTestApp",
"sandbox":false,
"apns_tokens":[
"368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
"76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86"
]
}
Örnek sonuç HTTP 200 OK
{
"results":[
{
"apns_token": "368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
"status": "OK",
"registration_token":"nKctODamlM4:CKrh_PC8kIb7O...clJONHoA"
},
{
"apns_token": "76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86",
"status":"Internal Server Error"
},
]
}
Aşağıdaki şekilde function yazıyorum ama sonuçta token gelmiyor..Nerde hata yapıyorum acaba function TForm1.iOsTokenAl(AccessToken,APNToken:string):string;
begin
with RESTClient1 do
begin
Accept:='application/json, text/plain; q=0.9, text/html;q=0.8,';
AcceptCharset:='utf-8, *;q=0.8';
BaseURL:='https://iid.googleapis.com/iid/v1:batchImport';
ContentType:='application/json';
end;
RESTResponse1.ContentType:='application/json';
with RESTRequest1 do
begin
Params.Clear;
Client:=RESTClient1;
Method:=TRESTRequestMethod.rmPOST;
Params.Add;
Params[0].ContentTypeStr:='';
Params[0].Kind:=TRESTRequestParameterKind.pkHTTPHEADER;
Params[0].Name:='Authorization';
Params[0].Options:=[TRESTRequestParameterOption.poDoNotEncode];
Params[0].Value:='Bearer '+AccessToken;
Params.Add;
Params[1].ContentTypeStr:='';
Params[1].Kind:=TRESTRequestParameterKind.pkHTTPHEADER;
Params[1].Options:=[TRESTRequestParameterOption.poDoNotEncode];
Params[1].Name:='access_token_auth';
Params[1].Value:='true';
Params.Add;
Params[2].ContentTypeStr:='application/json';
Params[2].Kind:=TRESTRequestParameterKind.pkREQUESTBODY;
Params[2].Name:='body4F2F8D1B700A48268C02F0BEF90A6118';
Params[2].value:='{'+
'"application": "com.google.FCMTestApp",'+
'"sandbox":false,'+
'"apns_tokens":"'+APNToken+'"'+
'}';
Execute;
end;
Result:=RestResponse1.Content;
end;
Cvp: iOS Bildirim hakkında - RAD Coder - 03-02-2025 (01-02-2025, Saat: 13:50)barissagir Adlı Kullanıcıdan Alıntı: Merhabalar, yorumlarınız çok teşekkür ederim. 1- https://console.firebase.google.com üzerinde, iOS App oluşturmalısınız. Örneğinizde, proje adı com.google.FCMTestApp. Proje oluştururken; Delphi proje ayarlarınızda uygulamanızın adı ne ise o adı hem firebase proje adı olarak yazmalı, hem de gönderdiğiniz json içinde bu adı göndermelisiniz. Sorunun asıl kaynağı da bu olabilir. 2- Apple Developer hesabınız ile App IDs ekranında uygulamanızı seçip, uygulama özelliklerinde APNs kısmında Developer ve Production APNs sertifikalarını etkinleştirin. 3- Certificates sayfasında, oluşturduğunuz PN sertifikalarını indirip, macOS bilgisayara yükleyin. 4- macOS üzerinde, Keychain Access aracılığıyla PN sertifikalarını tek tek seç ve export edin. Böylece pem sertifikasını, p12 sertifikasına dönüştürmüş olacaksınız. 5- console.firebase/Project settings/Cloud Messaging sekmesi/APNs Certificates ekranına gidin ve buradaki development APNs certificate ve Production APNs certificate alanlarına ilgili sertifikaları yükleyin. 6- Tekrar göndermeyi deneyin ve dönen json'ı bize iletin. Olası hata sebepleri; 1- Yukarıda belirtilen firebase ve Apple Developer konfigürasyonlarının doğru yapılmamış olması. 2- RESTRequest1; bir ve ikinci parametrelerde ContentTypeStr boş set etmişsiniz. Bu satırları silin (Params[0].ContentTypeStr:='' ve Params[1].ContentTypeStr:='' ). 3- RESTRequest1; 3. parametrede proje adının (com.google.FCMTestApp), asıl proje adı ile aynı olmaması. 4- RESTRequest1; 3. parametrede sandbox, test ortamı için true olmalıdır. Yani developer sertifikası ve test cihazınızda işlem yapıyorsanız "sandbox":true olmalıdır. Cvp: iOS Bildirim hakkında - barissagir - 03-02-2025 Hocam kodumu dediğiniz gibi değiştirdim. function TForm1.iOsTokenAl(AccessToken,APNToken:string):string;
begin
with RESTClient1 do
begin
Accept:='application/json, text/plain; q=0.9, text/html;q=0.8,';
AcceptCharset:='utf-8, *;q=0.8';
BaseURL:='https://iid.googleapis.com/iid/v1:batchImport';
ContentType:='application/json';
end;
RESTResponse1.ContentType:='application/json';
with RESTRequest1 do
begin
Params.Clear;
Client:=RESTClient1;
Method:=TRESTRequestMethod.rmPOST;
Params.Add;
Params[0].Kind:=TRESTRequestParameterKind.pkHTTPHEADER;
Params[0].Name:='Authorization';
Params[0].Options:=[TRESTRequestParameterOption.poDoNotEncode];
Params[0].Value:='Bearer '+AccessToken;
Params.Add;
Params[1].Kind:=TRESTRequestParameterKind.pkHTTPHEADER;
Params[1].Options:=[TRESTRequestParameterOption.poDoNotEncode];
Params[1].Name:='access_token_auth';
Params[1].Value:='true';
Params.Add;
Params[2].ContentTypeStr:='application/json';
Params[2].Kind:=TRESTRequestParameterKind.pkREQUESTBODY;
Params[2].Name:='body4F2F8D1B700A48268C02F0BEF90A6118';
Params[2].value:='{'+
'"application": "com.ornek.iosbildirim",'+
'"sandbox":true,'+
'"apns_tokens":"'+APNToken+'"'+
'}';
Execute;
end;
Result:=RestResponse1.Content;
end;
Apple da kitapta denilenleri harfiyen yapmıştım. [attachment=2873] Firebase ayarları şöyle [attachment=2874] [attachment=2876] Access Token ı https://developers.google.com/oauthplayground/ adresinden alıyorum. [attachment=2875] Sonuç olarak hep, <H1>Unauthorized</H1> <H2>Error 401</H2> hatasını alıyorum. Cvp: iOS Bildirim hakkında - Mr.X - 03-02-2025 Merhaba, Sanırım siz FCM üzerindeki değişikliği tam olarak anlamadınız. Benim de php tarafında yapmamın sebebi direkt destek olmasından ötürü. Konumda bahsettiğim fcm paneli üzerinden json dosyasına sahip olmanız gerekiyor. artık tek bir token ile işlem yapamıyorsunuz. Delphi tarafında da o jsonu parse edip istenilen kısmı yollayan bir fonksyion yazamadım. Bunu php üzerindeki Fcm kütüphaneleri otomatik yapıyor. Cvp: iOS Bildirim hakkında - barissagir - 03-02-2025 (03-02-2025, Saat: 15:32)Mr.X Adlı Kullanıcıdan Alıntı: Merhaba, Hocam burdaki dosya access token almanızı sağlamıyor mu? |