Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS7: currentRadioAccessTechnology für CTTelephonyNetworkInfo??? (https://www.delphipraxis.net/177547-ios7-currentradioaccesstechnology-fuer-cttelephonynetworkinfo.html)

romber 12. Nov 2013 21:47

iOS7: currentRadioAccessTechnology für CTTelephonyNetworkInfo???
 
Hallo!

In iOS7 SDK wurde der CTTelephonyNetworkInfo um die Eigenschaft currentRadioAccessTechnology ergänzt, die den Typ der Verbindung (z.B. GPRS, HSDPA, LTE usw.) zurück gibt. In der aktuellen iOSapi.CoreTelephony von XE5 gibt es diese Eigenschaft noch nicht. Besteht die Möglichkeit, diese Eigenschaft und die Funktion dahinter selber zu implementieren?

Danke!

romber 14. Nov 2013 11:27

AW: iOS7: currentRadioAccessTechnology für CTTelephonyNetworkInfo???
 
Keiner hat Ideen?

romber 17. Nov 2013 11:04

AW: iOS7: currentRadioAccessTechnology für CTTelephonyNetworkInfo???
 
In einem englischsprachigen Forum hat jemand vor einigen Wochen die selbe Frage gestellt, schrieb aber nach kurzer Zeit, dass er die Lösung gefunden hat. Gepostet hat er die Lösung aber nicht. Auch meine Anfrage an den Autor blieb bis jetzt unbeantwortet.

Ich verstehe eins nicht: wenn ich im SDK-Manager die SDK vom Mac importiere, dann sollte doch die aktuelle Version von CTTelephonyNetworkInfo übernommen werden, oder nicht? Oder werden nur die Classe und Methoden übernommen, die von Firemonkey bereits unterstützt werden?

Union 17. Nov 2013 12:05

AW: iOS7: currentRadioAccessTechnology für CTTelephonyNetworkInfo???
 
Wenn Du das SDK importierst, werden nur die entsprechenden Header-Files kopiert. Programmieren mußt Du schon selber.

romber 18. Nov 2013 13:32

AW: iOS7: currentRadioAccessTechnology für CTTelephonyNetworkInfo???
 
Lösung:

In der Unit iOSApi.CoreTelephony der Interface-Deklaration von CTTelephonyNetworkInfo eine Zeile hinzufügen:
Delphi-Quellcode:
CTTelephonyNetworkInfo = interface(NSObject)
    ['{F75CE940-A78E-4C64-812E-0576386B582D}']
    function subscriberCellularProvider: CTCarrier; cdecl;
    function currentRadioAccessTechnology: NSString; cdecl; // <----- Hier die neue Funktion
    procedure setSubscriberCellularProviderDidUpdateNotifier(Handler: TCellularProviderNotifier); cdecl;
  end;
  TCTTelephonyNetworkInfo = class(TOCGenericImport<CTTelephonyNetworkInfoClass, CTTelephonyNetworkInfo>) end;
Dann nur noch dafür sorgen, dass beim Kompilieren nicht die bereits erstellte DCU einbezogen wird, sondern die gerade modifizierte pas-Datei. Der Aufruf zieht dann so aus:

Delphi-Quellcode:
procedure TapIOSTelephony.UpdateProviderInfo;
var
  networkInfo: CTTelephonyNetworkInfo;
  radioAccessTechnology: string;
begin
  networkInfo := TCTTelephonyNetworkInfo.Wrap(TCTTelephonyNetworkInfo.OCClass.alloc);
  networkInfo.init;
  FTelephonyRadioAccessTechnology := NSStringToString(networkInfo.currentRadioAccessTechnology);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz