/* * Copyright (c) 2010-2019 Belledonne Communications SARL. * * This file is part of linphone-iphone * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #import #import #import #import #import #import "HDLLinphoneIntercomVC.h" #import //#import "IASKSettingsReader.h" //#import "IASKSettingsStore.h" //#import "IASKAppSettingsViewController.h" //#import "FastAddressBook.h" //#import "InAppProductsManager.h" #include "linphone/linphonecore.h" #include "bctoolbox/list.h" //#import "OrderedDictionary.h" #import "HDLLinphoneProviderDelegate.h" #import extern NSString *const LINPHONERC_APPLICATION_KEY; extern NSString *const kLinphoneCoreUpdate; extern NSString *const kLinphoneDisplayStatusUpdate; extern NSString *const kLinphoneMessageReceived; extern NSString *const kLinphoneTextComposeEvent; extern NSString *const kLinphoneCallUpdate; extern NSString *const kLinphoneRegistrationUpdate; extern NSString *const kLinphoneMainViewChange; extern NSString *const kLinphoneAddressBookUpdate; extern NSString *const kLinphoneLogsUpdate; extern NSString *const kLinphoneSettingsUpdate; extern NSString *const kLinphoneBluetoothAvailabilityUpdate; extern NSString *const kLinphoneConfiguringStateUpdate; extern NSString *const kLinphoneGlobalStateUpdate; extern NSString *const kLinphoneNotifyReceived; extern NSString *const kLinphoneNotifyPresenceReceivedForUriOrTel; extern NSString *const kLinphoneCallEncryptionChanged; extern NSString *const kLinphoneFileTransferSendUpdate; extern NSString *const kLinphoneFileTransferRecvUpdate; extern NSString *const kLinphoneQRCodeFound; extern NSString *const kLinphoneChatCreateViewChange; typedef enum _NetworkType { network_none = 0, network_2g, network_3g, network_4g, network_lte, network_wifi } NetworkType; extern const int kLinphoneAudioVbrCodecDefaultBitrate; /* Application specific call context */ typedef struct _CallContext { LinphoneCall* call; bool_t cameraIsEnabled; } CallContext; @interface LinphoneCallAppData :NSObject { @public bool_t batteryWarningShown; UILocalNotification *notification; NSMutableDictionary *userInfos; bool_t videoRequested; /*set when user has requested for video*/ NSTimer* timer; }; @end typedef struct _LinphoneManagerSounds { SystemSoundID vibrate; } LinphoneManagerSounds; @interface HDLLinphoneManager : NSObject { @protected SCNetworkReachabilityRef proxyReachability; @private NSTimer* mIterateTimer; NSMutableArray* pushCallIDs; UIBackgroundTaskIdentifier pausedCallBgTask; UIBackgroundTaskIdentifier incallBgTask; UIBackgroundTaskIdentifier pushBgTaskRefer; UIBackgroundTaskIdentifier pushBgTaskCall; UIBackgroundTaskIdentifier pushBgTaskMsg; CTCallCenter* mCallCenter; NSDate *mLastKeepAliveDate; @public CallContext currentCallContextBeforeGoingBackground; } @property (nonatomic, assign) BOOL isResettingVideoEnable;//是否正在重设视频开关 @property (nonatomic, assign) HDLLPType deviceType;//类型 + (HDLLinphoneManager*)instance; #ifdef DEBUG + (void)instanceRelease; #endif + (LinphoneCore*) getLc; + (BOOL)runningOnIpad; + (BOOL)isNotIphone3G; + (NSString *)getPreferenceForCodec: (const char*) name withRate: (int) rate; + (BOOL)isCodecSupported: (const char*)codecName; + (NSSet *)unsupportedCodecs; + (NSString *)getUserAgent; + (int)unreadMessageCount; - (void)playMessageSound; - (void)resetLinphoneCore; - (void)startLinphoneCore; - (void)destroyLinphoneCore; - (BOOL)resignActive; - (void)becomeActive; - (BOOL)enterBackgroundMode; - (void)addPushCallId:(NSString*) callid; - (void)configurePushTokenForProxyConfig: (LinphoneProxyConfig*)cfg; - (BOOL)popPushCallID:(NSString*) callId; - (void)acceptCallForCallId:(NSString*)callid; - (LinphoneCall *)callByCallId:(NSString *)call_id; - (void)cancelLocalNotifTimerForCallId:(NSString*)callid; - (void)alertLIME:(LinphoneChatRoom *)room; - (void)startPushLongRunningTask:(NSString *)loc_key callId:(NSString *)callId; + (BOOL)langageDirectionIsRTL; - (void)refreshRegisters; - (bool)allowSpeaker; - (void)configureVbrCodecs; + (BOOL)copyFile:(NSString*)src destination:(NSString*)dst override:(BOOL)override ignore:(BOOL)ignore; + (PHFetchResult *)getPHAssets:(NSString *)key; + (NSString*)bundleFile:(NSString*)file; + (NSString *)preferenceFile:(NSString *)file; + (NSString *)documentFile:(NSString *)file; + (NSString*)dataFile:(NSString*)file; + (NSString*)cacheDirectory; - (void)acceptCall:(LinphoneCall *)call evenWithVideo:(BOOL)video; - (void)send:(NSString *)replyText toChatRoom:(LinphoneChatRoom *)room; - (void)call:(const LinphoneAddress *)address; - (BOOL)doCall:(const LinphoneAddress *)iaddr; - (BOOL)doCallWithSas:(const LinphoneAddress *)iaddr isSas:(BOOL)isSas; +(id)getMessageAppDataForKey:(NSString*)key inMessage:(LinphoneChatMessage*)msg; +(void)setValueInMessageAppData:(id)value forKey:(NSString*)key inMessage:(LinphoneChatMessage*)msg; - (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key; - (void)lpConfigSetString:(NSString *)value forKey:(NSString *)key inSection:(NSString *)section; - (NSString *)lpConfigStringForKey:(NSString *)key; - (NSString *)lpConfigStringForKey:(NSString *)key inSection:(NSString *)section; - (NSString *)lpConfigStringForKey:(NSString *)key withDefault:(NSString *)value; - (NSString *)lpConfigStringForKey:(NSString *)key inSection:(NSString *)section withDefault:(NSString *)value; - (void)lpConfigSetInt:(int)value forKey:(NSString *)key; - (void)lpConfigSetInt:(int)value forKey:(NSString *)key inSection:(NSString *)section; - (int)lpConfigIntForKey:(NSString *)key; - (int)lpConfigIntForKey:(NSString *)key inSection:(NSString *)section; - (int)lpConfigIntForKey:(NSString *)key withDefault:(int)value; - (int)lpConfigIntForKey:(NSString *)key inSection:(NSString *)section withDefault:(int)value; - (void)lpConfigSetBool:(BOOL)value forKey:(NSString*)key; - (void)lpConfigSetBool:(BOOL)value forKey:(NSString *)key inSection:(NSString *)section; - (BOOL)lpConfigBoolForKey:(NSString *)key; - (BOOL)lpConfigBoolForKey:(NSString *)key inSection:(NSString *)section; - (BOOL)lpConfigBoolForKey:(NSString *)key withDefault:(BOOL)value; - (BOOL)lpConfigBoolForKey:(NSString *)key inSection:(NSString *)section withDefault:(BOOL)value; - (void)silentPushFailed:(NSTimer*)timer; - (void)removeAllAccounts; + (BOOL)isMyself:(const LinphoneAddress *)addr; - (void)shouldPresentLinkPopup; - (void)setProviderDelegate:(HDLLinphoneProviderDelegate *)del; //- (void) setLinphoneManagerAddressBookMap:(OrderedDictionary*) addressBook; //- (OrderedDictionary*) getLinphoneManagerAddressBookMap; - (void) setContactsUpdated:(BOOL) updated; - (BOOL) getContactsUpdated; - (void)checkNewVersion; - (void)loadAvatar; - (void)migrationPerAccount; - (void)login:(NSString*)username password:(NSString*)pwd domain:(NSString*) domain; - (void)udpLogin:(NSString*)username password:(NSString*)pwd domain:(NSString*) domain; - (void)tcpLogin:(NSString*)username password:(NSString*)pwd domain:(NSString*) domain; -(void)initalLinPhonal; -(void)endCall; -(void)acceptCall; -(void)startCall:(NSString *)phoneNum; -(void)snapShotWithView:(UIView *)view; -(void)enableMicro:(BOOL)enble; /*是否允许视频播放 */ -(void)enableVideoPlay:(bool_t)enable; @property HDLLinphoneProviderDelegate *providerDelegate; @property (readonly) BOOL isTesting; //@property(readonly, strong) FastAddressBook *fastAddressBook; @property (readonly) NetworkType network; @property (readonly) const char* frontCamId; @property (readonly) const char* backCamId; @property(strong, nonatomic) NSString *SSID; @property (readonly) sqlite3* database; @property(nonatomic, strong) NSData *pushNotificationToken; @property (readonly) LinphoneManagerSounds sounds; @property (readonly) NSMutableArray *logs; @property (nonatomic, assign) BOOL speakerBeforePause; @property (nonatomic, assign) BOOL speakerEnabled; @property (nonatomic, assign) BOOL bluetoothAvailable; @property (nonatomic, assign) BOOL bluetoothEnabled; @property (readonly) NSString* contactSipField; @property (readonly,copy) NSString* contactFilter; @property (copy) void (^silentPushCompletion)(UIBackgroundFetchResult); @property (readonly) BOOL wasRemoteProvisioned; @property (readonly) LpConfig *configDb; //@property(readonly) InAppProductsManager *iapManager; @property(strong, nonatomic) NSMutableArray *fileTransferDelegates; @property BOOL nextCallIsTransfer; @property BOOL conf; @property NSDictionary *pushDict; //@property(strong, nonatomic) OrderedDictionary *linphoneManagerAddressBookMap; @property (nonatomic, assign) BOOL contactsUpdated; @property UIImage *avatar; @end