forked from mirrors/linphone-iphone
Implementation PushKit, pb when touching Pushkit notif
This commit is contained in:
parent
485263237b
commit
7380d4099e
7 changed files with 137 additions and 48 deletions
|
|
@ -1,8 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" launchScreen="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11198.2" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" launchScreen="YES" colorMatched="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9529"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
|
|
@ -12,39 +13,39 @@
|
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="color_C.png" id="xtr-QP-6We" userLabel="backgroundColor">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<frame key="frameInset"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="0.0" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="backgroundColor" red="1" green="0.0" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</imageView>
|
||||
<view contentMode="scaleAspectFit" id="4JK-Mw-ZzG">
|
||||
<rect key="frame" x="87" y="191" width="200" height="285"/>
|
||||
<frame key="frameInset" minX="23.20%" minY="28.64%" width="53.33%" height="42.73%"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" image="splashscreen.png" id="pz0-nR-x0f" userLabel="logoImage">
|
||||
<rect key="frame" x="0.0" y="0.0" width="200" height="169"/>
|
||||
<frame key="frameInset" minX="0.0%" width="100.00%" height="59.30%"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.10000000000000001" id="Koq-w1-U9D" userLabel="descLabel">
|
||||
<rect key="frame" x="0.0" y="251" width="200" height="34"/>
|
||||
<frame key="frameInset" minX="0.0%" minY="88.07%" width="100.00%" height="11.93%"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<attributedString key="attributedText">
|
||||
<fragment content="The ">
|
||||
<attributes>
|
||||
<color key="NSColor" red="1" green="0.36862745099999999" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="NSColor" red="0.98766469955444336" green="0.27512490749359131" blue="0.029739789664745331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<font key="NSFont" size="26" name="HelveticaNeue"/>
|
||||
<paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="truncatingTail" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
|
||||
</attributes>
|
||||
</fragment>
|
||||
<fragment content="libre">
|
||||
<attributes>
|
||||
<color key="NSColor" red="1" green="0.36862745099999999" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="NSColor" red="0.98766469955444336" green="0.27512490749359131" blue="0.029739789664745331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<font key="NSFont" size="26" name="HelveticaNeue-Italic"/>
|
||||
<paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="truncatingTail" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
|
||||
</attributes>
|
||||
</fragment>
|
||||
<fragment content=" SIP client">
|
||||
<attributes>
|
||||
<color key="NSColor" red="1" green="0.36862745099999999" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="NSColor" red="0.98766469955444336" green="0.27512490749359131" blue="0.029739789664745331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<font key="NSFont" size="26" name="HelveticaNeue"/>
|
||||
<paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="truncatingTail" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
|
||||
</attributes>
|
||||
|
|
@ -53,20 +54,20 @@
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LINPHONE" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.10000000000000001" id="u44-hJ-SgI" userLabel="nameLabel">
|
||||
<rect key="frame" x="0.0" y="196" width="200" height="47"/>
|
||||
<frame key="frameInset" minX="0.0%" minY="68.77%" width="100.00%" height="16.49%"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="41"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</view>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="color_A.png" id="P8D-kY-xHP" userLabel="bottomBarImage">
|
||||
<rect key="frame" x="127" y="656" width="119" height="11"/>
|
||||
<frame key="frameInset" minX="49.61%" width="119" height="11"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<point key="canvasLocation" x="238.5" y="1005.5"/>
|
||||
|
|
@ -75,6 +76,11 @@
|
|||
<resources>
|
||||
<image name="color_A.png" width="2" height="2"/>
|
||||
<image name="color_C.png" width="2" height="2"/>
|
||||
<image name="splashscreen.png" width="181" height="165"/>
|
||||
<image name="splashscreen.png" width="183" height="168"/>
|
||||
</resources>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
<simulatedStatusBarMetrics key="statusBar"/>
|
||||
<simulatedOrientationMetrics key="orientation"/>
|
||||
<simulatedScreenMetrics key="destination" type="retina4_7.fullscreen"/>
|
||||
</simulatedMetricsContainer>
|
||||
</document>
|
||||
|
|
|
|||
|
|
@ -18,12 +18,14 @@
|
|||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <PushKit/PushKit.h>
|
||||
#import <AddressBookUI/ABPeoplePickerNavigationController.h>
|
||||
|
||||
|
||||
#import "LinphoneCoreSettingsStore.h"
|
||||
|
||||
@interface LinphoneAppDelegate : NSObject <UIApplicationDelegate,UIAlertViewDelegate> {
|
||||
//@interface LinphoneAppDelegate : NSObject <UIApplicationDelegate,UIAlertViewDelegate> {
|
||||
@interface LinphoneAppDelegate : NSObject <UIApplicationDelegate,UIAlertViewDelegate, PKPushRegistryDelegate> {
|
||||
@private
|
||||
UIBackgroundTaskIdentifier bgStartId;
|
||||
BOOL startedInBackground;
|
||||
|
|
@ -35,6 +37,7 @@
|
|||
@property (nonatomic, retain) UIAlertView *waitingIndicator;
|
||||
@property (nonatomic, retain) NSString *configURL;
|
||||
@property (nonatomic, strong) UIWindow* window;
|
||||
@property PKPushRegistry* voipRegistry;
|
||||
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#import "ShopView.h"
|
||||
#import "linphoneAppDelegate.h"
|
||||
#import "AddressBook/ABPerson.h"
|
||||
#import <PushKit/PushKit.h>
|
||||
|
||||
#import "CoreTelephony/CTCallCenter.h"
|
||||
#import "CoreTelephony/CTCall.h"
|
||||
|
|
@ -182,23 +183,17 @@
|
|||
|
||||
- (void)registerForNotifications:(UIApplication *)app {
|
||||
LinphoneManager *instance = [LinphoneManager instance];
|
||||
|
||||
if ([app respondsToSelector:@selector(registerUserNotificationSettings:)]) {
|
||||
/* iOS8 notifications can be actioned! Awesome: */
|
||||
UIUserNotificationType notifTypes =
|
||||
UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
|
||||
|
||||
NSSet *categories =
|
||||
[NSSet setWithObjects:[self getCallNotificationCategory], [self getMessageNotificationCategory], [self getAccountExpiryNotificationCategory], nil];
|
||||
UIUserNotificationSettings *userSettings =
|
||||
[UIUserNotificationSettings settingsForTypes:notifTypes categories:categories];
|
||||
[app registerUserNotificationSettings:userSettings];
|
||||
|
||||
if (!instance.isTesting) {
|
||||
[app registerForRemoteNotifications];
|
||||
}
|
||||
if (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_8_0) {
|
||||
//[app unregisterForRemoteNotifications];
|
||||
// iOS8 and more : PushKit
|
||||
self.voipRegistry = [[PKPushRegistry alloc] initWithQueue:dispatch_get_main_queue()];
|
||||
self.voipRegistry.delegate = self;
|
||||
|
||||
// Initiate registration.
|
||||
self.voipRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
|
||||
} else {
|
||||
/* iOS7 and below */
|
||||
self.voipRegistry.delegate = NULL;
|
||||
if (!instance.isTesting) {
|
||||
NSUInteger notifTypes =
|
||||
UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge;
|
||||
|
|
@ -209,21 +204,19 @@
|
|||
#pragma deploymate pop
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
|
||||
UIApplication *app = [UIApplication sharedApplication];
|
||||
UIApplicationState state = app.applicationState;
|
||||
|
||||
LinphoneManager *instance = [LinphoneManager instance];
|
||||
BOOL background_mode = [instance lpConfigBoolForKey:@"backgroundmode_preference"];
|
||||
BOOL start_at_boot = [instance lpConfigBoolForKey:@"start_at_boot_preference"];
|
||||
|
||||
[self registerForNotifications:app];
|
||||
|
||||
if (state == UIApplicationStateBackground) {
|
||||
// we've been woken up directly to background;
|
||||
if (!start_at_boot || !background_mode) {
|
||||
// autoboot disabled or no background, and no push: do nothing and wait for a real launch
|
||||
/*output a log with NSLog, because the ortp logging system isn't activated yet at this time*/
|
||||
//output a log with NSLog, because the ortp logging system isn't activated yet at this time
|
||||
NSLog(@"Linphone launch doing nothing because start_at_boot or background_mode are not activated.", NULL);
|
||||
return YES;
|
||||
}
|
||||
|
|
@ -248,7 +241,16 @@
|
|||
}
|
||||
if (bgStartId != UIBackgroundTaskInvalid)
|
||||
[[UIApplication sharedApplication] endBackgroundTask:bgStartId];
|
||||
|
||||
|
||||
//Enable all notification type. VoIP Notifications don't present a UI but we will use this to show local nofications later
|
||||
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert| UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
|
||||
|
||||
//register the notification settings
|
||||
[application registerUserNotificationSettings:notificationSettings];
|
||||
|
||||
//output what state the app is in. This will be used to see when the app is started in the background
|
||||
NSLog(@"app launched with state : %li", (long)application.applicationState);
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
|
@ -324,8 +326,10 @@
|
|||
As a result, break it and refresh registers in order to make sure to receive incoming INVITE or MESSAGE*/
|
||||
if (linphone_core_get_calls(LC) == NULL) { // if there are calls, obviously our TCP socket shall be working
|
||||
linphone_core_set_network_reachable(LC, FALSE);
|
||||
LinphoneManager.instance.connectivity = none; /*force connectivity to be discovered again*/
|
||||
LinphoneManager.instance.connectivity = none; /*force connectivity to be discovered again*/
|
||||
LOGI(@"Registers refreshing");
|
||||
[LinphoneManager.instance refreshRegisters];
|
||||
LOGI(@"Registers refreshed");
|
||||
if (loc_key != nil) {
|
||||
|
||||
NSString *callId = [userInfo objectForKey:@"call-id"];
|
||||
|
|
@ -344,6 +348,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
LOGI(@"Notification %@ processed", userInfo.description);
|
||||
}
|
||||
|
||||
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
|
||||
|
|
@ -442,13 +447,60 @@
|
|||
[LinphoneManager.instance setPushNotificationToken:nil];
|
||||
}
|
||||
|
||||
#pragma mark - PushKit Functions
|
||||
|
||||
- (void)pushRegistry:(PKPushRegistry *)registry
|
||||
didInvalidatePushTokenForType:(NSString *)type {
|
||||
LOGI(@"PushKit Token invalidated");
|
||||
[LinphoneManager.instance setPushNotificationToken:nil];
|
||||
}
|
||||
|
||||
- (void)pushRegistry:(PKPushRegistry *)registry
|
||||
didReceiveIncomingPushWithPayload:(PKPushPayload *)payload
|
||||
forType:(NSString *)type {
|
||||
LOGI(@"PushKit received with payload : %@", payload.description);
|
||||
|
||||
/*NSDictionary *payloadDict = payload.dictionaryPayload[@"aps"];
|
||||
NSString *message = payloadDict[@"alert"];
|
||||
|
||||
//present a local notifcation to visually see when we are recieving a VoIP Notification
|
||||
if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) {
|
||||
|
||||
UILocalNotification *localNotification = [UILocalNotification new];
|
||||
localNotification.alertBody = message;
|
||||
localNotification.applicationIconBadgeNumber = 1;
|
||||
localNotification.soundName = UILocalNotificationDefaultSoundName;
|
||||
|
||||
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
|
||||
}*/
|
||||
|
||||
LOGI(@"incoming voip notfication: %@ ", payload.dictionaryPayload);
|
||||
dispatch_async(dispatch_get_main_queue(), ^{[self processRemoteNotification:payload.dictionaryPayload];});
|
||||
}
|
||||
|
||||
- (void)pushRegistry:(PKPushRegistry *)registry
|
||||
didUpdatePushCredentials:(PKPushCredentials *)credentials
|
||||
forType:(NSString *)type {
|
||||
LOGI(@"PushKit credentials updated");
|
||||
LOGI(@"voip token: %@", (credentials.token));
|
||||
LOGI(@"%@ : %@", NSStringFromSelector(_cmd), credentials.token);
|
||||
[LinphoneManager.instance setPushNotificationToken:credentials.token];
|
||||
}
|
||||
|
||||
#pragma mark - User notifications
|
||||
|
||||
#pragma deploymate push "ignored-api-availability"
|
||||
/*#pragma deploymate push "ignored-api-availability"
|
||||
- (void)application:(UIApplication *)application
|
||||
didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
|
||||
//register for voip notifiactions
|
||||
self.voipRegistry = [[PKPushRegistry alloc] initWithQueue:dispatch_get_main_queue()];
|
||||
|
||||
// Initiate registration.
|
||||
NSLog(@"Initiating PushKit registration");
|
||||
self.voipRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
|
||||
self.voipRegistry.delegate = self;
|
||||
LOGI(@"%@", NSStringFromSelector(_cmd));
|
||||
}
|
||||
}*/
|
||||
|
||||
- (void)application:(UIApplication *)application
|
||||
handleActionWithIdentifier:(NSString *)identifier
|
||||
|
|
|
|||
|
|
@ -616,7 +616,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore *lc, const char
|
|||
}
|
||||
|
||||
- (void)onCall:(LinphoneCall *)call StateChanged:(LinphoneCallState)state withMessage:(const char *)message {
|
||||
|
||||
|
||||
// Handling wrapper
|
||||
LinphoneCallAppData *data = (__bridge LinphoneCallAppData *)linphone_call_get_user_data(call);
|
||||
if (!data) {
|
||||
|
|
@ -638,7 +638,6 @@ static void linphone_iphone_display_status(struct _LinphoneCore *lc, const char
|
|||
NSString *address = [FastAddressBook displayNameForAddress:addr];
|
||||
|
||||
if (state == LinphoneCallIncomingReceived) {
|
||||
|
||||
/*first step is to re-enable ctcall center*/
|
||||
CTCallCenter *lCTCallCenter = [[CTCallCenter alloc] init];
|
||||
|
||||
|
|
@ -653,12 +652,12 @@ static void linphone_iphone_display_status(struct _LinphoneCore *lc, const char
|
|||
return;
|
||||
}
|
||||
|
||||
if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
|
||||
if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
|
||||
|
||||
LinphoneCallLog *callLog = linphone_call_get_call_log(call);
|
||||
NSString *callId = [NSString stringWithUTF8String:linphone_call_log_get_call_id(callLog)];
|
||||
|
||||
if (![LinphoneManager.instance popPushCallID:callId]) {
|
||||
//if (![LinphoneManager.instance popPushCallID:callId]) {
|
||||
// case where a remote notification is not already received
|
||||
// Create a new local notification
|
||||
data->notification = [[UILocalNotification alloc] init];
|
||||
|
|
@ -704,7 +703,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore *lc, const char
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1925,9 +1924,12 @@ static int comp_call_state_paused(const LinphoneCall *call, const void *param) {
|
|||
if (connectivity == none) {
|
||||
// don't trust ios when he says there is no network. Create a new reachability context, the previous one might
|
||||
// be mis-functionning.
|
||||
LOGI(@"None connectivity");
|
||||
[self setupNetworkReachabilityCallback];
|
||||
}
|
||||
linphone_core_refresh_registers(theLinphoneCore); // just to make sure REGISTRATION is up to date
|
||||
LOGI(@"Network reachability callback setup");
|
||||
linphone_core_refresh_registers(theLinphoneCore); // just to make sure REGISTRATION is up to date
|
||||
LOGI(@"Out of refreshRegisters");
|
||||
}
|
||||
|
||||
- (void)renameDefaultSettings {
|
||||
|
|
@ -2216,10 +2218,19 @@ static int comp_call_state_paused(const LinphoneCall *call, const void *param) {
|
|||
([LinphoneManager bundleFile:[self lpConfigStringForKey:@"local_ring" inSection:@"sound"].lastPathComponent]
|
||||
?: [LinphoneManager bundleFile:@"notes_of_the_optimistic.caf"])
|
||||
.lastPathComponent;
|
||||
NSString * notif_type;
|
||||
if (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_8_0) {
|
||||
//IOS 8 and more
|
||||
notif_type = @".voip";
|
||||
} else {
|
||||
// IOS 7 and below
|
||||
notif_type = @"";
|
||||
}
|
||||
|
||||
NSString *params = [NSString
|
||||
stringWithFormat:@"app-id=%@.%@;pn-type=apple;pn-tok=%@;pn-msg-str=IM_MSG;pn-call-str=IC_MSG;pn-"
|
||||
stringWithFormat:@"app-id=%@%@.%@;pn-type=apple;pn-tok=%@;pn-msg-str=IM_MSG;pn-call-str=IC_MSG;pn-"
|
||||
@"call-snd=%@;pn-msg-snd=msg.caf",
|
||||
[[NSBundle mainBundle] bundleIdentifier], APPMODE_SUFFIX, tokenString, ring];
|
||||
[[NSBundle mainBundle] bundleIdentifier], notif_type, APPMODE_SUFFIX, tokenString, ring];
|
||||
|
||||
LOGI(@"Proxy config %s configured for push notifications with contact: %@",
|
||||
linphone_proxy_config_get_identity(proxyCfg), params);
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@
|
|||
<key>UIBackgroundModes</key>
|
||||
<array>
|
||||
<string>audio</string>
|
||||
<string>fetch</string>
|
||||
<string>remote-notification</string>
|
||||
<string>voip</string>
|
||||
</array>
|
||||
|
|
|
|||
8
linphone.entitlements
Normal file
8
linphone.entitlements
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>aps-environment</key>
|
||||
<string>development</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -666,6 +666,7 @@
|
|||
63FD3F121CA17FA400E9AECC /* libmbedx509.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 63FD3F081CA17F9100E9AECC /* libmbedx509.a */; };
|
||||
70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; };
|
||||
70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; };
|
||||
8CA2004C1D8158440095F859 /* PushKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CA2004B1D8158440095F859 /* PushKit.framework */; };
|
||||
C90FAA7915AF54E6002091CB /* HistoryDetailsView.m in Sources */ = {isa = PBXBuildFile; fileRef = C90FAA7715AF54E6002091CB /* HistoryDetailsView.m */; };
|
||||
D306459E1611EC2A00BB571E /* UILoadingImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D306459D1611EC2900BB571E /* UILoadingImageView.m */; };
|
||||
D3128FE115AABC7E00A2147A /* ContactDetailsView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsView.m */; };
|
||||
|
|
@ -1580,6 +1581,8 @@
|
|||
7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = "<group>"; };
|
||||
70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
|
||||
70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
8C23BCB71D82AAC3005F19BB /* linphone.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = linphone.entitlements; sourceTree = "<group>"; };
|
||||
8CA2004B1D8158440095F859 /* PushKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PushKit.framework; path = System/Library/Frameworks/PushKit.framework; sourceTree = SDKROOT; };
|
||||
C90FAA7615AF54E6002091CB /* HistoryDetailsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryDetailsView.h; sourceTree = "<group>"; };
|
||||
C90FAA7715AF54E6002091CB /* HistoryDetailsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryDetailsView.m; sourceTree = "<group>"; };
|
||||
C9B3A6FD15B485DB006F52EE /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = Utils/Utils.h; sourceTree = "<group>"; };
|
||||
|
|
@ -1784,6 +1787,7 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8CA2004C1D8158440095F859 /* PushKit.framework in Frameworks */,
|
||||
340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */,
|
||||
637835A51CFD971D00599382 /* libbv16.a in Frameworks */,
|
||||
63FD3F091CA17F9100E9AECC /* libmbedcrypto.a in Frameworks */,
|
||||
|
|
@ -2153,6 +2157,7 @@
|
|||
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8C23BCB71D82AAC3005F19BB /* linphone.entitlements */,
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
F0938158188E629800A55DFA /* iTunesArtwork */,
|
||||
|
|
@ -2180,6 +2185,7 @@
|
|||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8CA2004B1D8158440095F859 /* PushKit.framework */,
|
||||
570742661D5A63DB004B9C84 /* StoreKit.framework */,
|
||||
636920661D253DF700D44CAC /* libbcunit.a */,
|
||||
637835A41CFD971D00599382 /* libbv16.a */,
|
||||
|
|
@ -4415,6 +4421,7 @@
|
|||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = NO;
|
||||
CODE_SIGN_ENTITLEMENTS = linphone.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COMPRESS_PNG_FILES = NO;
|
||||
|
|
@ -4503,7 +4510,7 @@
|
|||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = NO;
|
||||
CODE_SIGN_ENTITLEMENTS = "";
|
||||
CODE_SIGN_ENTITLEMENTS = linphone.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COMPRESS_PNG_FILES = NO;
|
||||
|
|
@ -4591,6 +4598,7 @@
|
|||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = NO;
|
||||
CODE_SIGN_ENTITLEMENTS = linphone.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COMPRESS_PNG_FILES = NO;
|
||||
|
|
@ -4678,7 +4686,7 @@
|
|||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = NO;
|
||||
CODE_SIGN_ENTITLEMENTS = "";
|
||||
CODE_SIGN_ENTITLEMENTS = linphone.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COMPRESS_PNG_FILES = NO;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue