• 0
Martifan

как позвонить на iPhone?

Вопросы

доброго времени сутки

подскажите как можно позвонить на iPhone? пробую пример: Mobile_Tutorial:_Using_the_Phone_Dialer_on_Mobile_Devices_(iOS_and_Android)

и аппликация не запускается сразу вырубается это баг Delphi Berlin или это функция больше не работает?  

заранее спасибо

Изменено пользователем Martifan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 ответов на этот вопрос

  • 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

что то не получается не могли бы написать инструкцию как все это сделать? спасибо 

я сделал вот так:

 

{**********************************************************}
{                                                          }
{           CodeGear Delphi Runtime Library                }
{                                                          }
{ Delphi-Objective-C Bridge                                }
{ Interfaces for Cocoa framework CoreTelephony             }
{                                                          }
{ Copyright (c) 2010, Apple Inc. All rights reserved.      }
{                                                          }
{ Translator: Embarcadero Technologies, Inc.               }
{ Copyright(c) 2016 Embarcadero Technologies, Inc.         }
{              All rights reserved                         }
{                                                          }
{**********************************************************}

unit iOSapi.CoreTelephony;

interface

uses Macapi.ObjectiveC, iOSapi.CocoaTypes, iOSapi.Foundation, Posix.Dlfcn;


// ===== External functions =====

var
  CoreTelephonyModule: THandle;

const
   CoreTelephonyFwk: string = '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony';
 
@@ -114,4 +120,10 @@
   Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateDisconnected');
 end;

type

{$M+}
// ===== Forward declarations =====

  CTCarrier = interface;
  CTTelephonyNetworkInfo = interface;
  CTCall = interface;
  CTCallCenter = interface;

// ===== Interface declarations =====

  CTCarrierClass = interface(NSObjectClass)
    ['{FA14F6EF-18EF-4AE0-A115-5D5819B05A32}']
  end;
  CTCarrier = interface(NSObject)
    ['{7FF111BF-7573-4BD2-881F-0B614DD5C01E}']
    function allowsVOIP: Boolean; cdecl;
    function carrierName: NSString; cdecl;
    function isoCountryCode: NSString; cdecl;
    function mobileCountryCode: NSString; cdecl;
    function mobileNetworkCode: NSString; cdecl;
  end;
  TCTCarrier = class(TOCGenericImport<CTCarrierClass, CTCarrier>)  end;

  TCellularProviderNotifier = procedure(const Data: CTCarrier) of object;
  CTTelephonyNetworkInfoClass = interface(NSObjectClass)
    ['{28EB8488-EE8F-4967-B8A8-6BF96AD4382D}']
  end;
  CTTelephonyNetworkInfo = interface(NSObject)
    ['{F75CE940-A78E-4C64-812E-0576386B582D}']
    function subscriberCellularProvider: CTCarrier; cdecl;
    procedure setSubscriberCellularProviderDidUpdateNotifier(Handler: TCellularProviderNotifier); cdecl;
  end;
  TCTTelephonyNetworkInfo = class(TOCGenericImport<CTTelephonyNetworkInfoClass, CTTelephonyNetworkInfo>)  end;

  CTCallClass = interface(NSObjectClass)
    ['{1FA8C69C-57FA-4607-ACBA-547C9636312F}']
  end;
  CTCall = interface(NSObject)
    ['{31625956-A516-437B-A385-7DF292D6FB5A}']
    function callID: NSString; cdecl;
    function callState: NSString; cdecl;
  end;
  TCTCall = class(TOCGenericImport<CTCallClass, CTCall>)  end;

  TCallEventHandler = procedure(const Data: CTCall) of object;
  CTCallCenterClass = interface(NSObjectClass)
    ['{A28B0E07-ED5A-4C05-82DA-E9FE4073E14D}']
  end;
  CTCallCenter = interface(NSObject)
    ['{0FDB7AC7-B379-4E20-8D72-F1C11EA32EB6}']
    procedure setCallEventHandler(EventHandler: TCallEventHandler); cdecl;
    function currentCalls: NSSet; cdecl;
  end;
  TCTCallCenter = class(TOCGenericImport<CTCallCenterClass, CTCallCenter>)  end;

// exported string consts

function CTCallStateDialing: NSString;
function CTCallStateIncoming: NSString;
function CTCallStateConnected: NSString;
function CTCallStateDisconnected: NSString;

implementation

const
  CoreTelephonyFwk: string = '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony';

function CTCallStateDialing: NSString;
begin
  Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateDialing');
end;

function CTCallStateIncoming: NSString;
begin
  Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateIncoming');
end;

function CTCallStateConnected: NSString;
begin
  Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateConnected');
end;

function CTCallStateDisconnected: NSString;
begin
  Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateDisconnected');
end;

initialization
  CoreTelephonyModule := dlopen(MarshaledAString(libCoreTelephony), RTLD_LAZY);

finalization
  dlclose(CoreTelephonyModule);

end.

 

Изменено пользователем Martifan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

вот мой рабочий вариант

{ ********************************************************** }
{ }
{ CodeGear Delphi Runtime Library }
{ }
{ Delphi-Objective-C Bridge }
{ Interfaces for Cocoa framework CoreTelephony }
{ }
{ Copyright (c) 2010, Apple Inc. All rights reserved. }
{ }
{ Translator: Embarcadero Technologies, Inc. }
{ Copyright(c) 2016 Embarcadero Technologies, Inc. }
{ All rights reserved }
{ }
{ ********************************************************** }

unit iOSapi.CoreTelephony;

interface

uses Macapi.ObjectiveC, iOSapi.CocoaTypes, iOSapi.Foundation;

// ===== External functions =====

const
  libCoreTelephony = '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony';

type
{$M+}
  // ===== Forward declarations =====

  CTCarrier = interface;
  CTTelephonyNetworkInfo = interface;
  CTCall = interface;
  CTCallCenter = interface;

  // ===== Interface declarations =====

  CTCarrierClass = interface(NSObjectClass)
    ['{FA14F6EF-18EF-4AE0-A115-5D5819B05A32}']
  end;

  CTCarrier = interface(NSObject)
    ['{7FF111BF-7573-4BD2-881F-0B614DD5C01E}']
    function allowsVOIP: Boolean; cdecl;
    function carrierName: NSString; cdecl;
    function isoCountryCode: NSString; cdecl;
    function mobileCountryCode: NSString; cdecl;
    function mobileNetworkCode: NSString; cdecl;
  end;

  TCTCarrier = class(TOCGenericImport<CTCarrierClass, CTCarrier>)
  end;

  TCellularProviderNotifier = procedure(const Data: CTCarrier) of object;

  CTTelephonyNetworkInfoClass = interface(NSObjectClass)
    ['{28EB8488-EE8F-4967-B8A8-6BF96AD4382D}']
  end;

  CTTelephonyNetworkInfo = interface(NSObject)
    ['{F75CE940-A78E-4C64-812E-0576386B582D}']
    function subscriberCellularProvider: CTCarrier; cdecl;
    procedure setSubscriberCellularProviderDidUpdateNotifier(Handler: TCellularProviderNotifier); cdecl;
  end;

  TCTTelephonyNetworkInfo = class(TOCGenericImport<CTTelephonyNetworkInfoClass, CTTelephonyNetworkInfo>)
  end;

  CTCallClass = interface(NSObjectClass)
    ['{1FA8C69C-57FA-4607-ACBA-547C9636312F}']
  end;

  CTCall = interface(NSObject)
    ['{31625956-A516-437B-A385-7DF292D6FB5A}']
    function callID: NSString; cdecl;
    function callState: NSString; cdecl;
  end;

  TCTCall = class(TOCGenericImport<CTCallClass, CTCall>)
  end;

  TCallEventHandler = procedure(const Data: CTCall) of object;

  CTCallCenterClass = interface(NSObjectClass)
    ['{A28B0E07-ED5A-4C05-82DA-E9FE4073E14D}']
  end;

  CTCallCenter = interface(NSObject)
    ['{0FDB7AC7-B379-4E20-8D72-F1C11EA32EB6}']
    procedure setCallEventHandler(EventHandler: TCallEventHandler); cdecl;
    function currentCalls: NSSet; cdecl;
  end;

  TCTCallCenter = class(TOCGenericImport<CTCallCenterClass, CTCallCenter>)
  end;

  // exported string consts

function CTCallStateDialing: NSString;
function CTCallStateIncoming: NSString;
function CTCallStateConnected: NSString;
function CTCallStateDisconnected: NSString;

implementation

{$IF defined(IOS) and defined(CPUARM)}

uses
  Posix.Dlfcn;
{$ENDIF IOS}

const
  CoreTelephonyFwk: string = '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony';

function CTCallStateDialing: NSString;
begin
  Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateDialing');
end;

function CTCallStateIncoming: NSString;
begin
  Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateIncoming');
end;

function CTCallStateConnected: NSString;
begin
  Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateConnected');
end;

function CTCallStateDisconnected: NSString;
begin
  Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateDisconnected');
end;

{$IF defined(IOS) and defined(CPUARM)}

var
  CoreTelephonyModule: THandle;

initialization

CoreTelephonyModule := dlopen(MarshaledAString(libCoreTelephony), RTLD_LAZY);

finalization

dlclose(CoreTelephonyModule);
{$ENDIF IOS}

end.

UPDATE Я еще в SDK прописал Framework CoreTelephony по аналогии с другими фреймворками и обновил кеш SDK

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

я все сделал кроме прописать в SDK, подскажите как это сделать спасибо можете скрины выложить

FMX.PhoneDialer как это модуль добавляю, приложения не запускается

Изменено пользователем Martifan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 20.01.2017 в 09:38, Martifan сказал:

UP

сделал так :

Copy iOSapi.CoreTelephony.pas from
C:\Program Files (x86)\Embarcadero\Studio\18.0\source\rtl\ios
to your project folder

отсюда

содержимое файла заменил исходным текстом  выше от Zuby.

Пример PhoneDialer заработал на Iphone.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От ENERGY
      Есть большой файл с анимацией, ~3 мб.  
      120 AnimCount - кадров, raws 10, одна картинка 400x400
      Под Android и Windows анимация прекрасно работает.
      Под iOS анимация скачет влево-вправо, или появляються куски предыдущего фрейма (нижней части) в верху текущей анимации.
      Я уже что только не делал, много раз менял файл, создавая его с разными raws, разными размерами картинок. Что-то меняется конечно, но остаются эти эффекты разной интенсивности.
      Файл склеиваю в своей проге из картинок, в финальном файле ошибок нет.
       
      Подскажите куда копать, просто замучался уже..
    • От Martifan
      Добрый день,
      Может ктонибудь помочь разобраться с записью/проигрыванием звука на iOS устройствах? 
      Нужно записывать звук в буффер (массив байтов). Нашли "замечатульную" библиотеку на github, которая позволяет обращаться к нативным методам устройства намрямую, и следуя инструкциям по записи звука в xCode пытаемся собрать тоже самое. Ниже привяжу ссылки... Библиотека мягко говоря не в лучшей кондиции такчто некоторые типы приходилось править вручную, и форматирование не вызывает восторга, но другого выбора нет. Если у когонибудь есть практика с другой библиотекой, или какиенибудь идеи, подскажите пожалуйста. Записывать надо обязательно в буффер, для дальнейшей обработки.
      GitHub библиотека
      Запись звука в xCode - github
      IOS.rar
    • От Martifan
      Всем доброго времени суток
      может кто знает как на iOS распознать речь и получены результат записать текстовом поле
      как на Android сделать я знаю но на iOS не получается
       
      Спасибо за ранее
    • От Astghik
      Hello !!!
      I want onButtonClick create popup. I use TPopup component. All good, but on android "Back button" click closing forma. But I want close popup (when popup is shown).

       
      //---------------------------------------------------------------------------------
      void __fastcall  btn3PointsClick(TObject *Sender)
      {
          PopUpSettings->IsOpen = true;
          PopUpSettings->PlacementTarget = btn3Points;
          PopUpSettings->BringToFront();
      }
      //-------------------------------------------------------------------------------------
      void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose)
      {
          try {
              if (PopUpSettings->IsOpen == true) {
                  CanClose = false;
              }
              else {
                  CanClose = true;
              }
          } __finally {
              PopUpSettings->IsOpen = false;
          }
      }
      //-------------------------------------------------------------------
       
    • От Rokweb
      Здравствуйте.
      Речь пойдёт об Android.
      Использовал в Berlin данный unit для проигрывания звуков (TMediaPlayer не подходит) и все отлично работало. Сейчас перешел на Tokyo и происходит зависание в цикле:
       
      while not GLoaded do begin Sleep(10); Application.ProcessMessages; end;  
      Модуль прикрепил в сообщении.
       
      Так же интересует - возможно ли, использовать стиль, созданный в процессе разработки Android приложения - в iOS и если да - то как это правильно реализовать (почти каждый контрол имеет сейчас свой стиль)?
       
      Прошу помощи.
      GameAudioManager.zip
    • От Edward Tarasov
      поставил этот патч 
      https://cc.embarcadero.com/item/30805
      Версия PAserver на mac стала - 10.1.1.37, test connection отвечает success, но при компиляции выдаеться ошибка - [PAClient Error] Error: E0014 Connection refused. Platform Assistant Server version mismatch - expecting version '10.0.1.23'. 
      10.0.1.23 - это старая версия PA... откатиться нельзя ибо не пашет, тоесть этот патч исправляет старую проблему - но добавляет эту... суть в том, как я понял после 4-х часовго гугления, что надо исправить PAclient, у которого версия почему то осталась старая... кто знает как с этим быть?
    • От tLink
      Всем доброго времени суток,
      Столкнулся с проблемой на iOS. На форме TabControl, на одной из вкладок лежит MapView (примерчик приложил). Если "свернуть/развернуть" приложение и походить по вкладкам, то пропадают иконки у TabControl, показывает как чёрные квадраты. Иконки установлены через ImageList. Такой же эффект и у ListView/Image на соседних вкладках. Можете что-то подсказать?
       
      project1 (2).rar
    • От Tumaso
      Подскажите, каким образом можно прочитать входящее СМС под iOS? Для Android на форуме есть работающий пример, а вот под iOS найти не удалось.
    • От Tumaso
      Столкнулся с неожиданной проблемой в iOS при работе с файлами: любые попытки чтения существующих файлов из System.IOUtils.TPath.GetDocumentsPath и любые попытки чтения/записи файлов в System.IOUtils.TPath.GetHomePath вызывают ошибку access denied. Где что нужно прописать, чтобы решить проблему работы с файлами?
    • От Виталий Иванов
      Есть ли возможность отследить сильное нажатие на элемент ? Долгое нажатие отлавливается, а вот сильное нажатие никак может есть какие-то уловки или это в принципе не возможно ?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу