From 33bee924b001c905f3ed5452382abb185f4ea433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Tue, 20 Jun 2017 17:40:03 +0200 Subject: [PATCH 01/28] Bump version number --- SRGAnalytics.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SRGAnalytics.xcodeproj/project.pbxproj b/SRGAnalytics.xcodeproj/project.pbxproj index fb5945db..51243c41 100644 --- a/SRGAnalytics.xcodeproj/project.pbxproj +++ b/SRGAnalytics.xcodeproj/project.pbxproj @@ -1099,7 +1099,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MARKETING_VERSION = 2.1.1; + MARKETING_VERSION = 2.1.2; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; @@ -1146,7 +1146,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MARKETING_VERSION = 2.1.1; + MARKETING_VERSION = 2.1.2; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; From b8ef3de2659d5246e6c09957507464dee72e11ed Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 26 Jun 2017 13:45:09 +0200 Subject: [PATCH 02/28] Update dependencies --- Cartfile | 2 +- Cartfile.resolved | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cartfile b/Cartfile index db2ad93a..a61ec13e 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1,3 @@ github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" -github "SRGSSR/srgdataprovider-ios" "5.2" +github "SRGSSR/srgdataprovider-ios" "ce21fb15913b57e927d7b6e85fd248d2c35c0768" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index d738da41..d7cbc935 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "5.2" +github "SRGSSR/srgdataprovider-ios" "ce21fb15913b57e927d7b6e85fd248d2c35c0768" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From 7607638e7b63a19693f9a12ea09a5277aee528c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Mon, 26 Jun 2017 15:37:07 +0200 Subject: [PATCH 03/28] Replace tabs with spaces --- Documentation/Getting-started.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/Getting-started.md b/Documentation/Getting-started.md index 042a5c5f..9d4dd395 100644 --- a/Documentation/Getting-started.md +++ b/Documentation/Getting-started.md @@ -64,12 +64,12 @@ and implement the methods you need to supply measurement information: // Mandatory - (NSString *)srg_pageViewTitle { - return @"home"; + return @"home"; } - (NSDictionary *)srg_pageViewCustomLabels { - return @{ @"myapp_category" : @"general" }; + return @{ @"myapp_category" : @"general" }; } @end @@ -160,7 +160,7 @@ This framework adds a category `SRGMediaPlayerController (SRGAnalytics_DataProvi ```objective-c SRGRequest *request = [mediaPlayerController playMediaComposition:mediaComposition withPreferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil completionHandler:^(NSError * _Nonnull error) { - // Deal with errors, or play the URL with a media player + // Deal with errors, or play the URL with a media player }]; [request resume]; ``` From 5642184e98120a73f66501f67b0695df18db611b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Wed, 28 Jun 2017 17:08:59 +0200 Subject: [PATCH 04/28] Update data provider library --- Cartfile | 2 +- Cartfile.resolved | 2 +- ...ayerController+SRGAnalytics_DataProvider.h | 63 ++++++++++--------- ...ayerController+SRGAnalytics_DataProvider.m | 14 ++--- Tests/Sources/DataProviderTestCase.m | 6 +- 5 files changed, 44 insertions(+), 43 deletions(-) diff --git a/Cartfile b/Cartfile index a61ec13e..352c6e39 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1,3 @@ github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" -github "SRGSSR/srgdataprovider-ios" "ce21fb15913b57e927d7b6e85fd248d2c35c0768" +github "SRGSSR/srgdataprovider-ios" "feature/model-update" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index d7cbc935..79003b8f 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "ce21fb15913b57e927d7b6e85fd248d2c35c0768" +github "SRGSSR/srgdataprovider-ios" "f6af29d0ccf8a52e34abe67ec85a53c189e111c4" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" diff --git a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.h b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.h index 68c0cd4d..86d894d1 100644 --- a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.h +++ b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.h @@ -21,26 +21,27 @@ NS_ASSUME_NONNULL_BEGIN * be started automatically if `resume` is set to `YES`. If set to `NO`, you are responsible of starting the request, * either by calling `-resume` on it or adding it to a request queue. * - * @param mediaComposition The media composition to prepare. - * @param preferredProtocol The protocol to use. If `SRGProtocolNone` or if the protocol is not found, a recommended - * protocol will be used instead. - * @param preferredQuality The quality to use. If `SRGQualityNone` or not found, the best available quality - * is used. - * @param preferredStartBitRate The bit rate the media should start playing with, in kbps. This parameter is a recommendation - * with no result guarantee, though it should in general be applied. The nearest available - * quality (larger or smaller than the requested size) will be used. Usual SRG SSR valid bit - * ranges vary from 100 to 3000 kbps. Use 0 to start with the lowest quality stream. - * @param userInfo Optional dictionary conveying arbitrary information during playback. - * @param resume Set to `YES` if you want the request to be started automatically. - * @param completionHandler The completion handler will be called once the player is prepared, or if a request - * error is encountered (it will not be called if the player cannot play the content; - * listen to `SRGMediaPlayerPlaybackDidFailNotification` to catch playback errors). + * @param mediaComposition The media composition to prepare. + * @param preferredStreamingMethod The streaming method to use. If `SRGStreamingMethodNone` or if the method is not + * found, a recommended method will be used instead. + * @param preferredQuality The quality to use. If `SRGQualityNone` or not found, the best available quality + * is used. + * @param preferredStartBitRate The bit rate the media should start playing with, in kbps. This parameter is a + * recommendation with no result guarantee, though it should in general be applied. The + * nearest available quality (larger or smaller than the requested size) will be used. + * Usual SRG SSR valid bit ranges vary from 100 to 3000 kbps. Use 0 to start with the + * lowest quality stream. + * @param userInfo Optional dictionary conveying arbitrary information during playback. + * @param resume Set to `YES` if you want the request to be started automatically. + * @param completionHandler The completion handler will be called once the player is prepared, or if a request + * error is encountered (it will not be called if the player cannot play the content; + * listen to `SRGMediaPlayerPlaybackDidFailNotification` to catch playback errors). * * @return The playback request. If successful, the player will be paused on the chapter / segment specified by * the media composition. The method might return `nil` if no protocol / quality combination is found. */ - (nullable SRGRequest *)prepareToPlayMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredProtocol:(SRGProtocol)preferredProtocol + withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod preferredQuality:(SRGQuality)preferredQuality preferredStartBitRate:(NSInteger)preferredStartBitRate userInfo:(nullable NSDictionary *)userInfo @@ -52,27 +53,27 @@ NS_ASSUME_NONNULL_BEGIN * be started automatically if `resume` is set to `YES`. If set to `NO`, you are responsible of starting the request, * either by calling `-resume` on it or adding it to a request queue. * - * @param mediaComposition The media composition to play. - * @param preferredProtocol The protocol to use. If `SRGProtocolNone` or if the protocol is not found, a recommended - * protocol will be used instead. - * @param preferredQuality The quality to use. If `SRGQualityNone` or not found, the best available quality - * is used. - * @param preferredStartBitRate The bit rate the video should at least start with, in kbps. This parameter is a - * recommendation with no result guarantee, though it should in general be applied. The - * nearest available quality (larger or smaller than the requested size) will be used. - * Usual SRG SSR valid bit ranges vary from 100 to 3000 kbps. Use 0 to start with the - * lowest quality stream. - * @param userInfo Optional dictionary conveying arbitrary information during playback. - * @param resume Set to `YES` if you want the request to be started automatically. - * @param completionHandler The completion handler will be called once the player is playing, or if a request - * error is encountered (it will not be called if the player cannot play the content; - * listen to `SRGMediaPlayerPlaybackDidFailNotification` to catch playback errors). + * @param mediaComposition The media composition to play. + * @param preferredStreamingMethod The streaming method to use. If `SRGStreamingMethodNone` or if the method is not + * found, a recommended method will be used instead. + * @param preferredQuality The quality to use. If `SRGQualityNone` or not found, the best available quality + * is used. + * @param preferredStartBitRate The bit rate the media should start playing with, in kbps. This parameter is a + * recommendation with no result guarantee, though it should in general be applied. The + * nearest available quality (larger or smaller than the requested size) will be used. + * Usual SRG SSR valid bit ranges vary from 100 to 3000 kbps. Use 0 to start with the + * lowest quality stream. + * @param userInfo Optional dictionary conveying arbitrary information during playback. + * @param resume Set to `YES` if you want the request to be started automatically. + * @param completionHandler The completion handler will be called once the player is prepared, or if a request + * error is encountered (it will not be called if the player cannot play the content; + * listen to `SRGMediaPlayerPlaybackDidFailNotification` to catch playback errors). * * @return The playback request. If successful, the player will start on the chapter / segment specified by * the media composition. The method might return `nil` if no protocol / quality combination is found. */ - (nullable SRGRequest *)playMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredProtocol:(SRGProtocol)preferredProtocol + withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod preferredQuality:(SRGQuality)preferredQuality preferredStartBitRate:(NSInteger)preferredStartBitRate userInfo:(nullable NSDictionary *)userInfo diff --git a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m index e186ec37..8ae27401 100644 --- a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m +++ b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m @@ -31,7 +31,7 @@ + (NSDictionary *)fullInfoWithMediaComposition:(SRGMediaComposition *)mediaCompo } - (SRGRequest *)loadMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredProtocol:(SRGProtocol)preferredProtocol + withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod preferredQuality:(SRGQuality)preferredQuality preferredStartBitRate:(NSInteger)preferredStartBitRate resume:(BOOL)resume @@ -45,8 +45,8 @@ - (SRGRequest *)loadMediaComposition:(SRGMediaComposition *)mediaComposition SRGChapter *chapter = mediaComposition.mainChapter; - SRGProtocol protocol = (preferredProtocol != SRGProtocolNone) ? preferredProtocol : chapter.recommendedProtocol; - NSArray *resources = [chapter resourcesForProtocol:protocol]; + SRGStreamingMethod streamingMethod = (preferredStreamingMethod != SRGStreamingMethodNone) ? preferredStreamingMethod : chapter.recommendedStreamingMethod; + NSArray *resources = [chapter resourcesForStreamingMethod:streamingMethod]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @keypath(SRGResource.new, quality), @(preferredQuality)]; SRGResource *resource = [resources filteredArrayUsingPredicate:predicate].firstObject ?: resources.firstObject; if (! resource) { @@ -95,14 +95,14 @@ - (SRGRequest *)loadMediaComposition:(SRGMediaComposition *)mediaComposition #pragma mark Playback methods - (SRGRequest *)prepareToPlayMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredProtocol:(SRGProtocol)preferredProtocol + withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod preferredQuality:(SRGQuality)preferredQuality preferredStartBitRate:(NSInteger)preferredStartBitRate userInfo:(NSDictionary *)userInfo resume:(BOOL)resume completionHandler:(void (^)(NSError *error))completionHandler { - return [self loadMediaComposition:mediaComposition withPreferredProtocol:preferredProtocol preferredQuality:preferredQuality preferredStartBitRate:preferredStartBitRate resume:resume completionBlock:^(NSURL * _Nullable URL, NSInteger index, NSArray> *segments, NSDictionary * _Nullable analyticsLabels, NSError * _Nullable error) { + return [self loadMediaComposition:mediaComposition withPreferredStreamingMethod:preferredStreamingMethod preferredQuality:preferredQuality preferredStartBitRate:preferredStartBitRate resume:resume completionBlock:^(NSURL * _Nullable URL, NSInteger index, NSArray> *segments, NSDictionary * _Nullable analyticsLabels, NSError * _Nullable error) { if (error) { completionHandler ? completionHandler(error) : nil; return; @@ -116,14 +116,14 @@ - (SRGRequest *)prepareToPlayMediaComposition:(SRGMediaComposition *)mediaCompos } - (SRGRequest *)playMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredProtocol:(SRGProtocol)preferredProtocol + withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod preferredQuality:(SRGQuality)preferredQuality preferredStartBitRate:(NSInteger)preferredStartBitRate userInfo:(NSDictionary *)userInfo resume:(BOOL)resume completionHandler:(void (^)(NSError *error))completionHandler { - return [self loadMediaComposition:mediaComposition withPreferredProtocol:preferredProtocol preferredQuality:preferredQuality preferredStartBitRate:preferredStartBitRate resume:resume completionBlock:^(NSURL * _Nullable URL, NSInteger index, NSArray> *segments, NSDictionary * _Nullable analyticsLabels, NSError * _Nullable error) { + return [self loadMediaComposition:mediaComposition withPreferredStreamingMethod:preferredStreamingMethod preferredQuality:preferredQuality preferredStartBitRate:preferredStartBitRate resume:resume completionBlock:^(NSURL * _Nullable URL, NSInteger index, NSArray> *segments, NSDictionary * _Nullable analyticsLabels, NSError * _Nullable error) { if (error) { completionHandler ? completionHandler(error) : nil; return; diff --git a/Tests/Sources/DataProviderTestCase.m b/Tests/Sources/DataProviderTestCase.m index b3220298..aa57bb22 100644 --- a/Tests/Sources/DataProviderTestCase.m +++ b/Tests/Sources/DataProviderTestCase.m @@ -45,7 +45,7 @@ - (void)testPrepareToPlayMediaComposition [[dataProvider videoMediaCompositionWithUid:@"42297626" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); - [self.mediaPlayerController prepareToPlayMediaComposition:mediaComposition withPreferredProtocol:SRGProtocolNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { + [self.mediaPlayerController prepareToPlayMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { XCTAssertNil(error); XCTAssertEqual(self.mediaPlayerController.mediaComposition, mediaComposition); [expectation fulfill]; @@ -77,7 +77,7 @@ - (void)testPlayMediaComposition [[dataProvider videoMediaCompositionWithUid:@"42297626" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); - [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredProtocol:SRGProtocolNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { + [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { XCTAssertNil(error); XCTAssertEqual(self.mediaPlayerController.mediaComposition, mediaComposition); [expectation fulfill]; @@ -103,7 +103,7 @@ - (void)testPlaySegmentInMediaComposition [[dataProvider videoMediaCompositionWithUid:@"99ac4dd4-8cd4-4883-8c80-0373d37cf0ad" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); - [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredProtocol:SRGProtocolNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { + [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { XCTAssertNil(error); XCTAssertEqual(self.mediaPlayerController.mediaComposition, mediaComposition); }]; From cc9f8374e993bede702300d19c28b5b707def666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Wed, 28 Jun 2017 17:09:06 +0200 Subject: [PATCH 05/28] Update documentation --- Documentation/Getting-started.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Documentation/Getting-started.md b/Documentation/Getting-started.md index 9d4dd395..51834062 100644 --- a/Documentation/Getting-started.md +++ b/Documentation/Getting-started.md @@ -159,10 +159,9 @@ Our services directly supply the custom analytics labels which need to be sent t This framework adds a category `SRGMediaPlayerController (SRGAnalytics_DataProvider)`, which adds playback methods for media compositions to `SRGMediaPlayerController`. To play a media composition retrieved from an `SRGDataProvider`, simply call: ```objective-c -SRGRequest *request = [mediaPlayerController playMediaComposition:mediaComposition withPreferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil completionHandler:^(NSError * _Nonnull error) { +SRGRequest *request = [mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { // Deal with errors, or play the URL with a media player }]; -[request resume]; ``` on an `SRGMediaPlayerController` instance. Note that the play method returns an `SRGRequest` which must be resumed so that a token is retrieved before attempting to play the media. From 7dc05f910f89089bf5f08b8a748808232f131e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 29 Jun 2017 08:05:39 +0200 Subject: [PATCH 06/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 79003b8f..36b718d9 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "f6af29d0ccf8a52e34abe67ec85a53c189e111c4" +github "SRGSSR/srgdataprovider-ios" "fcd3cdaae24bf71d3a63ca65e2dc07e4a2f81e7a" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From d3eff9e778ed97b815c4ccb2cb6481dbfb69d3c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 29 Jun 2017 10:17:19 +0200 Subject: [PATCH 07/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 36b718d9..d3185258 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "fcd3cdaae24bf71d3a63ca65e2dc07e4a2f81e7a" +github "SRGSSR/srgdataprovider-ios" "2902e496ed1b6e2952e0806b19787db4a41a883c" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From 539739bb775409166ecd2e1ff1d53f32861c39b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 29 Jun 2017 10:29:14 +0200 Subject: [PATCH 08/28] Prefer DVR streams when available. Make playback methods less verbose --- Documentation/Getting-started.md | 2 +- ...ayerController+SRGAnalytics_DataProvider.h | 84 ++++++++++--------- ...ayerController+SRGAnalytics_DataProvider.m | 62 +++++++++----- Tests/Sources/DataProviderTestCase.m | 6 +- 4 files changed, 86 insertions(+), 68 deletions(-) diff --git a/Documentation/Getting-started.md b/Documentation/Getting-started.md index 51834062..ad3e1282 100644 --- a/Documentation/Getting-started.md +++ b/Documentation/Getting-started.md @@ -159,7 +159,7 @@ Our services directly supply the custom analytics labels which need to be sent t This framework adds a category `SRGMediaPlayerController (SRGAnalytics_DataProvider)`, which adds playback methods for media compositions to `SRGMediaPlayerController`. To play a media composition retrieved from an `SRGDataProvider`, simply call: ```objective-c -SRGRequest *request = [mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { +SRGRequest *request = [mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodHLS quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { // Deal with errors, or play the URL with a media player }]; ``` diff --git a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.h b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.h index 86d894d1..73016297 100644 --- a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.h +++ b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.h @@ -17,65 +17,67 @@ NS_ASSUME_NONNULL_BEGIN @interface SRGMediaPlayerController (SRGAnalytics_DataProvider) /** - * Return a request for preparing to play a media composition, trying to use the specified quality. The request can - * be started automatically if `resume` is set to `YES`. If set to `NO`, you are responsible of starting the request, - * either by calling `-resume` on it or adding it to a request queue. + * Return a request for preparing to play a media composition, trying to use the specified preferred settings. The request + * can be started automatically if `resume` is set to `YES`. If set to `NO`, you are responsible of starting the request, + * either by calling `-resume` on it or adding it to a request queue. If no exact match can be found for the specified + * settings, a recommended valid setup will be used instead. * - * @param mediaComposition The media composition to prepare. - * @param preferredStreamingMethod The streaming method to use. If `SRGStreamingMethodNone` or if the method is not - * found, a recommended method will be used instead. - * @param preferredQuality The quality to use. If `SRGQualityNone` or not found, the best available quality - * is used. - * @param preferredStartBitRate The bit rate the media should start playing with, in kbps. This parameter is a - * recommendation with no result guarantee, though it should in general be applied. The - * nearest available quality (larger or smaller than the requested size) will be used. - * Usual SRG SSR valid bit ranges vary from 100 to 3000 kbps. Use 0 to start with the - * lowest quality stream. - * @param userInfo Optional dictionary conveying arbitrary information during playback. - * @param resume Set to `YES` if you want the request to be started automatically. - * @param completionHandler The completion handler will be called once the player is prepared, or if a request - * error is encountered (it will not be called if the player cannot play the content; - * listen to `SRGMediaPlayerPlaybackDidFailNotification` to catch playback errors). + * @param mediaComposition The media composition to prepare. + * @param streamingMethod The streaming method to use. If `SRGStreamingMethodNone` or if the method is not + * found, a recommended method will be used instead. + * @param quality The quality to use. If `SRGQualityNone` or not found, the best available quality + * is used. + * @param startBitRate The bit rate the media should start playing with, in kbps. This parameter is a + * recommendation with no result guarantee, though it should in general be applied. The + * nearest available quality (larger or smaller than the requested size) will be used. + * Usual SRG SSR valid bit ranges vary from 100 to 3000 kbps. Use 0 to start with the + * lowest quality stream. + * @param userInfo Optional dictionary conveying arbitrary information during playback. + * @param resume Set to `YES` if you want the request to be started automatically. + * @param completionHandler The completion handler will be called once the player is prepared, or if a request + * error is encountered (it will not be called if the player cannot play the content; + * listen to `SRGMediaPlayerPlaybackDidFailNotification` to catch playback errors). * * @return The playback request. If successful, the player will be paused on the chapter / segment specified by * the media composition. The method might return `nil` if no protocol / quality combination is found. */ - (nullable SRGRequest *)prepareToPlayMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod - preferredQuality:(SRGQuality)preferredQuality - preferredStartBitRate:(NSInteger)preferredStartBitRate + withPreferredStreamingMethod:(SRGStreamingMethod)streamingMethod + quality:(SRGQuality)quality + startBitRate:(NSInteger)startBitRate userInfo:(nullable NSDictionary *)userInfo resume:(BOOL)resume completionHandler:(nullable void (^)(NSError * _Nullable error))completionHandler; /** - * Return a request for playing a media composition, trying to use the specified quality. The request can + * Return a request for playing a media composition, trying to use the specified preferred settings. The request can * be started automatically if `resume` is set to `YES`. If set to `NO`, you are responsible of starting the request, - * either by calling `-resume` on it or adding it to a request queue. + * either by calling `-resume` on it or adding it to a request queue. If no exact match can be found for the specified + * settings, a recommended valid setup will be used instead. * - * @param mediaComposition The media composition to play. - * @param preferredStreamingMethod The streaming method to use. If `SRGStreamingMethodNone` or if the method is not - * found, a recommended method will be used instead. - * @param preferredQuality The quality to use. If `SRGQualityNone` or not found, the best available quality - * is used. - * @param preferredStartBitRate The bit rate the media should start playing with, in kbps. This parameter is a - * recommendation with no result guarantee, though it should in general be applied. The - * nearest available quality (larger or smaller than the requested size) will be used. - * Usual SRG SSR valid bit ranges vary from 100 to 3000 kbps. Use 0 to start with the - * lowest quality stream. - * @param userInfo Optional dictionary conveying arbitrary information during playback. - * @param resume Set to `YES` if you want the request to be started automatically. - * @param completionHandler The completion handler will be called once the player is prepared, or if a request - * error is encountered (it will not be called if the player cannot play the content; - * listen to `SRGMediaPlayerPlaybackDidFailNotification` to catch playback errors). + * @param mediaComposition The media composition to play. + * @param streamingMethod The streaming method to use. If `SRGStreamingMethodNone` or if the method is not + * found, a recommended method will be used instead. + * @param quality The quality to use. If `SRGQualityNone` or not found, the best available quality + * is used. + * @param startBitRate The bit rate the media should start playing with, in kbps. This parameter is a + * recommendation with no result guarantee, though it should in general be applied. The + * nearest available quality (larger or smaller than the requested size) will be used. + * Usual SRG SSR valid bit ranges vary from 100 to 3000 kbps. Use 0 to start with the + * lowest quality stream. + * @param userInfo Optional dictionary conveying arbitrary information during playback. + * @param resume Set to `YES` if you want the request to be started automatically. + * @param completionHandler The completion handler will be called once the player is prepared, or if a request + * error is encountered (it will not be called if the player cannot play the content; + * listen to `SRGMediaPlayerPlaybackDidFailNotification` to catch playback errors). * * @return The playback request. If successful, the player will start on the chapter / segment specified by * the media composition. The method might return `nil` if no protocol / quality combination is found. */ - (nullable SRGRequest *)playMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod - preferredQuality:(SRGQuality)preferredQuality - preferredStartBitRate:(NSInteger)preferredStartBitRate + withPreferredStreamingMethod:(SRGStreamingMethod)streamingMethod + quality:(SRGQuality)quality + startBitRate:(NSInteger)startBitRate userInfo:(nullable NSDictionary *)userInfo resume:(BOOL)resume completionHandler:(nullable void (^)(NSError * _Nullable error))completionHandler; diff --git a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m index 8ae27401..f4c80a5b 100644 --- a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m +++ b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m @@ -31,36 +31,52 @@ + (NSDictionary *)fullInfoWithMediaComposition:(SRGMediaComposition *)mediaCompo } - (SRGRequest *)loadMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod - preferredQuality:(SRGQuality)preferredQuality - preferredStartBitRate:(NSInteger)preferredStartBitRate + withPreferredStreamingMethod:(SRGStreamingMethod)streamingMethod + quality:(SRGQuality)quality + startBitRate:(NSInteger)startBitRate resume:(BOOL)resume completionBlock:(SRGMediaPlayerDataProviderLoadCompletionBlock)completionBlock { NSParameterAssert(completionBlock); - if (preferredStartBitRate < 0) { - preferredStartBitRate = 0; + if (startBitRate < 0) { + startBitRate = 0; } SRGChapter *chapter = mediaComposition.mainChapter; - SRGStreamingMethod streamingMethod = (preferredStreamingMethod != SRGStreamingMethodNone) ? preferredStreamingMethod : chapter.recommendedStreamingMethod; - NSArray *resources = [chapter resourcesForStreamingMethod:streamingMethod]; - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @keypath(SRGResource.new, quality), @(preferredQuality)]; - SRGResource *resource = [resources filteredArrayUsingPredicate:predicate].firstObject ?: resources.firstObject; - if (! resource) { - return nil; + if (streamingMethod == SRGStreamingMethodNone) { + streamingMethod = chapter.recommendedStreamingMethod; } + // Find the best resource subset matching the streaming method and quality. Prefer DVR streams to live streams. + NSArray *resources = [chapter resourcesForStreamingMethod:streamingMethod]; + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @keypath(SRGResource.new, quality), @(quality)]; + NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@keypath(SRGResource.new, streamType) ascending:YES comparator:^(SRGResource * _Nonnull resource1, SRGResource * _Nonnull resource2) { + // Don't simply compare enum values as integers, since their order might change. + NSArray *orderedStreamTypes = @[ @(SRGStreamTypeOnDemand), @(SRGStreamTypeLive), @(SRGStreamTypeDVR) ]; + NSUInteger index1 = [orderedStreamTypes indexOfObject:@(resource1.streamType)]; + NSUInteger index2 = [orderedStreamTypes indexOfObject:@(resource2.streamType)]; + if (index1 == index2) { + return NSOrderedSame; + } + else if (index1 < index2) { + return NSOrderedAscending; + } + else { + return NSOrderedDescending; + } + }]; + SRGResource *resource = [[resources filteredArrayUsingPredicate:predicate] sortedArrayUsingDescriptors:@[sortDescriptor]].firstObject ?: resources.firstObject; + // Use the preferrred start bit rate is set. Currrently only supported by Akamai via a __b__ parameter (the actual // bitrate will be rounded to the nearest available quality) NSURL *URL = resource.URL; - if (preferredStartBitRate != 0 && [URL.host containsString:@"akamai"]) { + if (startBitRate != 0 && [URL.host containsString:@"akamai"]) { NSURLComponents *URLComponents = [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:NO]; NSMutableArray *queryItems = [URLComponents.queryItems mutableCopy] ?: [NSMutableArray array]; - [queryItems addObject:[NSURLQueryItem queryItemWithName:@"__b__" value:@(preferredStartBitRate).stringValue]]; + [queryItems addObject:[NSURLQueryItem queryItemWithName:@"__b__" value:@(startBitRate).stringValue]]; URLComponents.queryItems = [queryItems copy]; URL = URLComponents.URL; @@ -95,14 +111,14 @@ - (SRGRequest *)loadMediaComposition:(SRGMediaComposition *)mediaComposition #pragma mark Playback methods - (SRGRequest *)prepareToPlayMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod - preferredQuality:(SRGQuality)preferredQuality - preferredStartBitRate:(NSInteger)preferredStartBitRate + withPreferredStreamingMethod:(SRGStreamingMethod)streamingMethod + quality:(SRGQuality)quality + startBitRate:(NSInteger)startBitRate userInfo:(NSDictionary *)userInfo resume:(BOOL)resume - completionHandler:(void (^)(NSError *error))completionHandler + completionHandler:(void (^)(NSError * _Nullable))completionHandler { - return [self loadMediaComposition:mediaComposition withPreferredStreamingMethod:preferredStreamingMethod preferredQuality:preferredQuality preferredStartBitRate:preferredStartBitRate resume:resume completionBlock:^(NSURL * _Nullable URL, NSInteger index, NSArray> *segments, NSDictionary * _Nullable analyticsLabels, NSError * _Nullable error) { + return [self loadMediaComposition:mediaComposition withPreferredStreamingMethod:streamingMethod quality:quality startBitRate:startBitRate resume:resume completionBlock:^(NSURL * _Nullable URL, NSInteger index, NSArray> *segments, NSDictionary * _Nullable analyticsLabels, NSError * _Nullable error) { if (error) { completionHandler ? completionHandler(error) : nil; return; @@ -116,14 +132,14 @@ - (SRGRequest *)prepareToPlayMediaComposition:(SRGMediaComposition *)mediaCompos } - (SRGRequest *)playMediaComposition:(SRGMediaComposition *)mediaComposition - withPreferredStreamingMethod:(SRGStreamingMethod)preferredStreamingMethod - preferredQuality:(SRGQuality)preferredQuality - preferredStartBitRate:(NSInteger)preferredStartBitRate + withPreferredStreamingMethod:(SRGStreamingMethod)streamingMethod + quality:(SRGQuality)quality + startBitRate:(NSInteger)startBitRate userInfo:(NSDictionary *)userInfo resume:(BOOL)resume - completionHandler:(void (^)(NSError *error))completionHandler + completionHandler:(void (^)(NSError * _Nullable))completionHandler { - return [self loadMediaComposition:mediaComposition withPreferredStreamingMethod:preferredStreamingMethod preferredQuality:preferredQuality preferredStartBitRate:preferredStartBitRate resume:resume completionBlock:^(NSURL * _Nullable URL, NSInteger index, NSArray> *segments, NSDictionary * _Nullable analyticsLabels, NSError * _Nullable error) { + return [self loadMediaComposition:mediaComposition withPreferredStreamingMethod:streamingMethod quality:quality startBitRate:startBitRate resume:resume completionBlock:^(NSURL * _Nullable URL, NSInteger index, NSArray> *segments, NSDictionary * _Nullable analyticsLabels, NSError * _Nullable error) { if (error) { completionHandler ? completionHandler(error) : nil; return; diff --git a/Tests/Sources/DataProviderTestCase.m b/Tests/Sources/DataProviderTestCase.m index aa57bb22..8144f469 100644 --- a/Tests/Sources/DataProviderTestCase.m +++ b/Tests/Sources/DataProviderTestCase.m @@ -45,7 +45,7 @@ - (void)testPrepareToPlayMediaComposition [[dataProvider videoMediaCompositionWithUid:@"42297626" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); - [self.mediaPlayerController prepareToPlayMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { + [self.mediaPlayerController prepareToPlayMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { XCTAssertNil(error); XCTAssertEqual(self.mediaPlayerController.mediaComposition, mediaComposition); [expectation fulfill]; @@ -77,7 +77,7 @@ - (void)testPlayMediaComposition [[dataProvider videoMediaCompositionWithUid:@"42297626" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); - [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { + [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { XCTAssertNil(error); XCTAssertEqual(self.mediaPlayerController.mediaComposition, mediaComposition); [expectation fulfill]; @@ -103,7 +103,7 @@ - (void)testPlaySegmentInMediaComposition [[dataProvider videoMediaCompositionWithUid:@"99ac4dd4-8cd4-4883-8c80-0373d37cf0ad" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); - [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone preferredQuality:SRGQualityHD preferredStartBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { + [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { XCTAssertNil(error); XCTAssertEqual(self.mediaPlayerController.mediaComposition, mediaComposition); }]; From c7d1ce5a20ffd23accc71b66f6b28259408fe201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 29 Jun 2017 15:36:21 +0200 Subject: [PATCH 09/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index d3185258..bb926169 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "2902e496ed1b6e2952e0806b19787db4a41a883c" +github "SRGSSR/srgdataprovider-ios" "a1f68b581a123327d129a04e646fbe6f2a3242e7" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From 4f068818de244fe7d289980fdf81d8addf279e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 29 Jun 2017 16:00:16 +0200 Subject: [PATCH 10/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index bb926169..4ceb5d48 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "a1f68b581a123327d129a04e646fbe6f2a3242e7" +github "SRGSSR/srgdataprovider-ios" "780a8fa6b5b6a29892b22f142f7d507f2aaea6fb" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From 9350570bcc960153b37c9b175df44979960c809d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 29 Jun 2017 16:30:51 +0200 Subject: [PATCH 11/28] Update protocol for segments analytics --- .../SRGAnalytics_DataProvider.h | 2 +- ...aPlayerController+SRGAnalytics_DataProvider.m | 2 +- .../SRGSegment+SRGAnalytics_DataProvider.h | 15 --------------- .../SRGSubdivision+SRGAnalytics_DataProvider.h | 16 ++++++++++++++++ ...> SRGSubdivision+SRGAnalytics_DataProvider.m} | 4 ++-- SRGAnalytics.xcodeproj/project.pbxproj | 16 ++++++++-------- 6 files changed, 28 insertions(+), 27 deletions(-) delete mode 100644 Framework_DataProvider/Sources/SRGSegment+SRGAnalytics_DataProvider.h create mode 100644 Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.h rename Framework_DataProvider/Sources/{SRGSegment+SRGAnalytics_DataProvider.m => SRGSubdivision+SRGAnalytics_DataProvider.m} (84%) diff --git a/Framework_DataProvider/SRGAnalytics_DataProvider.h b/Framework_DataProvider/SRGAnalytics_DataProvider.h index 42b780eb..fa575644 100644 --- a/Framework_DataProvider/SRGAnalytics_DataProvider.h +++ b/Framework_DataProvider/SRGAnalytics_DataProvider.h @@ -11,4 +11,4 @@ // Public headers. #import "SRGMediaPlayerController+SRGAnalytics_DataProvider.h" -#import "SRGSegment+SRGAnalytics_DataProvider.h" +#import "SRGSubdivision+SRGAnalytics_DataProvider.h" diff --git a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m index f4c80a5b..9f46ae4a 100644 --- a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m +++ b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m @@ -6,7 +6,7 @@ #import "SRGMediaPlayerController+SRGAnalytics_DataProvider.h" -#import "SRGSegment+SRGAnalytics_DataProvider.h" +#import "SRGSubdivision+SRGAnalytics_DataProvider.h" #import diff --git a/Framework_DataProvider/Sources/SRGSegment+SRGAnalytics_DataProvider.h b/Framework_DataProvider/Sources/SRGSegment+SRGAnalytics_DataProvider.h deleted file mode 100644 index 68af6310..00000000 --- a/Framework_DataProvider/Sources/SRGSegment+SRGAnalytics_DataProvider.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) SRG SSR. All rights reserved. -// -// License information is available from the LICENSE file. -// - -#import -#import - -/** - * Standard implementation of analytics for segments stemming from the data provider library. - */ -@interface SRGSegment (SRGAnalytics_DataProvider) - -@end diff --git a/Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.h b/Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.h new file mode 100644 index 00000000..2ca8ed1e --- /dev/null +++ b/Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.h @@ -0,0 +1,16 @@ +// +// Copyright (c) SRG SSR. All rights reserved. +// +// License information is available from the LICENSE file. +// + +#import +#import + +/** + * Standard implementation of analytics for subdivision stemming from the data provider library. Chapters + * (which are subdivisions as well) can be seen as full-length segments. + */ +@interface SRGSubdivision (SRGAnalytics_DataProvider) + +@end diff --git a/Framework_DataProvider/Sources/SRGSegment+SRGAnalytics_DataProvider.m b/Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.m similarity index 84% rename from Framework_DataProvider/Sources/SRGSegment+SRGAnalytics_DataProvider.m rename to Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.m index 2832a545..347ace5e 100644 --- a/Framework_DataProvider/Sources/SRGSegment+SRGAnalytics_DataProvider.m +++ b/Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.m @@ -4,9 +4,9 @@ // License information is available from the LICENSE file. // -#import "SRGSegment+SRGAnalytics_DataProvider.h" +#import "SRGSubdivision+SRGAnalytics_DataProvider.h" -@implementation SRGSegment (SRGAnalytics_DataProvider) +@implementation SRGSubdivision (SRGAnalytics_DataProvider) #pragma mark SRGAnalyticsSegment protocol diff --git a/SRGAnalytics.xcodeproj/project.pbxproj b/SRGAnalytics.xcodeproj/project.pbxproj index 51243c41..68b23e50 100644 --- a/SRGAnalytics.xcodeproj/project.pbxproj +++ b/SRGAnalytics.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 6FABE2EE1D9C0255001C4E9A /* SRGAnalytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E69A1FF31D61E2070064E6C1 /* SRGAnalytics.framework */; }; 6FABE2EF1D9C0258001C4E9A /* SRGAnalytics_MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E61C0D551D61E9CD00AEAE6D /* SRGAnalytics_MediaPlayer.framework */; }; 6FABE2F01D9C0268001C4E9A /* SRGMediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E61C0D841D61F14A00AEAE6D /* SRGMediaPlayer.framework */; }; - 6FABE2FD1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FABE2FB1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6FABE2FE1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FABE2FC1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.m */; }; + 6FABE2FD1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FABE2FB1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6FABE2FE1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FABE2FC1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.m */; }; 6FAF430B1EF7F5090074E033 /* NSString_AnalyticsTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAF430A1EF7F5090074E033 /* NSString_AnalyticsTestCase.m */; }; 6FB331ED1D9BFB00001469F2 /* SRGAnalytics_DataProvider.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FB331E61D9BFB00001469F2 /* SRGAnalytics_DataProvider.framework */; }; 6FB331EE1D9BFB00001469F2 /* SRGAnalytics_DataProvider.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6FB331E61D9BFB00001469F2 /* SRGAnalytics_DataProvider.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -214,8 +214,8 @@ 6FA09D881D9EC4BC00EDCA64 /* SRGLogger.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SRGLogger.framework; path = Carthage/Build/iOS/SRGLogger.framework; sourceTree = ""; }; 6FA09D911D9EC61400EDCA64 /* SRGAnalyticsMediaPlayerLogger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SRGAnalyticsMediaPlayerLogger.h; sourceTree = ""; }; 6FA09D921D9EC66D00EDCA64 /* SRGAnalyticsDataProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SRGAnalyticsDataProvider.h; sourceTree = ""; }; - 6FABE2FB1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SRGSegment+SRGAnalytics_DataProvider.h"; sourceTree = ""; }; - 6FABE2FC1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "SRGSegment+SRGAnalytics_DataProvider.m"; sourceTree = ""; }; + 6FABE2FB1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SRGSubdivision+SRGAnalytics_DataProvider.h"; sourceTree = ""; }; + 6FABE2FC1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "SRGSubdivision+SRGAnalytics_DataProvider.m"; sourceTree = ""; }; 6FAF430A1EF7F5090074E033 /* NSString_AnalyticsTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSString_AnalyticsTestCase.m; path = Tests/Sources/NSString_AnalyticsTestCase.m; sourceTree = SOURCE_ROOT; }; 6FB331E61D9BFB00001469F2 /* SRGAnalytics_DataProvider.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SRGAnalytics_DataProvider.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6FB331F51D9BFB77001469F2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -412,8 +412,8 @@ 6FA09D921D9EC66D00EDCA64 /* SRGAnalyticsDataProvider.h */, 6FF3E21A1D9CFD7D00EB4A30 /* SRGMediaPlayerController+SRGAnalytics_DataProvider.h */, 6FF3E21B1D9CFD7D00EB4A30 /* SRGMediaPlayerController+SRGAnalytics_DataProvider.m */, - 6FABE2FB1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.h */, - 6FABE2FC1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.m */, + 6FABE2FB1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.h */, + 6FABE2FC1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.m */, ); path = Sources; sourceTree = ""; @@ -646,7 +646,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6FABE2FD1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.h in Headers */, + 6FABE2FD1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.h in Headers */, 6FF3E21C1D9CFD7D00EB4A30 /* SRGMediaPlayerController+SRGAnalytics_DataProvider.h in Headers */, 6FB331F91D9BFB77001469F2 /* SRGAnalytics_DataProvider.h in Headers */, ); @@ -906,7 +906,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6FABE2FE1D9C175E001C4E9A /* SRGSegment+SRGAnalytics_DataProvider.m in Sources */, + 6FABE2FE1D9C175E001C4E9A /* SRGSubdivision+SRGAnalytics_DataProvider.m in Sources */, 6FF3E21D1D9CFD7D00EB4A30 /* SRGMediaPlayerController+SRGAnalytics_DataProvider.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; From 8e061fb13854138545734f6e026b0cb4d3e2a4fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 29 Jun 2017 16:59:51 +0200 Subject: [PATCH 12/28] Fix stream selection --- .../SRGMediaPlayerController+SRGAnalytics_DataProvider.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m index 9f46ae4a..81e22200 100644 --- a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m +++ b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m @@ -54,7 +54,7 @@ - (SRGRequest *)loadMediaComposition:(SRGMediaComposition *)mediaComposition NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @keypath(SRGResource.new, quality), @(quality)]; NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@keypath(SRGResource.new, streamType) ascending:YES comparator:^(SRGResource * _Nonnull resource1, SRGResource * _Nonnull resource2) { // Don't simply compare enum values as integers, since their order might change. - NSArray *orderedStreamTypes = @[ @(SRGStreamTypeOnDemand), @(SRGStreamTypeLive), @(SRGStreamTypeDVR) ]; + NSArray *orderedStreamTypes = @[ @(SRGStreamTypeDVR), @(SRGStreamTypeLive), @(SRGStreamTypeOnDemand) ]; NSUInteger index1 = [orderedStreamTypes indexOfObject:@(resource1.streamType)]; NSUInteger index2 = [orderedStreamTypes indexOfObject:@(resource2.streamType)]; if (index1 == index2) { From 18c0aa472c7399ca01e29de3d49b4628acdbac14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 29 Jun 2017 17:29:00 +0200 Subject: [PATCH 13/28] Fix incorrect sorting --- .../SRGMediaPlayerController+SRGAnalytics_DataProvider.m | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m index 81e22200..b9cbc4c9 100644 --- a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m +++ b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m @@ -52,11 +52,12 @@ - (SRGRequest *)loadMediaComposition:(SRGMediaComposition *)mediaComposition // Find the best resource subset matching the streaming method and quality. Prefer DVR streams to live streams. NSArray *resources = [chapter resourcesForStreamingMethod:streamingMethod]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @keypath(SRGResource.new, quality), @(quality)]; - NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@keypath(SRGResource.new, streamType) ascending:YES comparator:^(SRGResource * _Nonnull resource1, SRGResource * _Nonnull resource2) { + NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@keypath(SRGResource.new, streamType) ascending:YES comparator:^(NSNumber * _Nonnull streamType1, NSNumber * _Nonnull streamType2) { // Don't simply compare enum values as integers, since their order might change. NSArray *orderedStreamTypes = @[ @(SRGStreamTypeDVR), @(SRGStreamTypeLive), @(SRGStreamTypeOnDemand) ]; - NSUInteger index1 = [orderedStreamTypes indexOfObject:@(resource1.streamType)]; - NSUInteger index2 = [orderedStreamTypes indexOfObject:@(resource2.streamType)]; + + NSUInteger index1 = [orderedStreamTypes indexOfObject:streamType1]; + NSUInteger index2 = [orderedStreamTypes indexOfObject:streamType2]; if (index1 == index2) { return NSOrderedSame; } @@ -67,7 +68,7 @@ - (SRGRequest *)loadMediaComposition:(SRGMediaComposition *)mediaComposition return NSOrderedDescending; } }]; - SRGResource *resource = [[resources filteredArrayUsingPredicate:predicate] sortedArrayUsingDescriptors:@[sortDescriptor]].firstObject ?: resources.firstObject; + SRGResource *resource = [[resources filteredArrayUsingPredicate:predicate] sortedArrayUsingDescriptors:@[sortDescriptor]].firstObject ?: [resources sortedArrayUsingDescriptors:@[sortDescriptor]].firstObject; // Use the preferrred start bit rate is set. Currrently only supported by Akamai via a __b__ parameter (the actual // bitrate will be rounded to the nearest available quality) From c08325356f47f6eace7ff7f9d7a251cdcbbf5b8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Fri, 30 Jun 2017 10:01:01 +0200 Subject: [PATCH 14/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 4ceb5d48..55bcc4a0 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "780a8fa6b5b6a29892b22f142f7d507f2aaea6fb" +github "SRGSSR/srgdataprovider-ios" "d3182511215c988e95821bd07f8854560cae8d48" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From ac3a72073321e2d95a213131922f73cf12085472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Fri, 30 Jun 2017 14:59:53 +0200 Subject: [PATCH 15/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 55bcc4a0..b77bd44a 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "d3182511215c988e95821bd07f8854560cae8d48" +github "SRGSSR/srgdataprovider-ios" "ba3f555e4dacc9ccd2db1cb90f4c8218b2248043" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From caa330927e26f7c04b90c64bd52e8d5cf19011a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Fri, 30 Jun 2017 15:54:37 +0200 Subject: [PATCH 16/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index b77bd44a..371b4ce4 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "ba3f555e4dacc9ccd2db1cb90f4c8218b2248043" +github "SRGSSR/srgdataprovider-ios" "e05da41449729e1587f6fac3054ed034b90f7ab8" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From c35262963d7041cc290498c4bdf2c193e66c9be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Fri, 30 Jun 2017 16:00:31 +0200 Subject: [PATCH 17/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 371b4ce4..dcfb2c2c 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "e05da41449729e1587f6fac3054ed034b90f7ab8" +github "SRGSSR/srgdataprovider-ios" "b1c9b491376c0d652ca1989ac7316b1998984158" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From c10754cff3ff3ea5afad9c52cc52528a7ba78ef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Fri, 30 Jun 2017 20:51:46 +0200 Subject: [PATCH 18/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index dcfb2c2c..41323c13 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "b1c9b491376c0d652ca1989ac7316b1998984158" +github "SRGSSR/srgdataprovider-ios" "d5dd7f920b297188c308c982e7cf5762a678bd85" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From c4879c5140648e3f344f1fce92d55e2ba5a88258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Mon, 3 Jul 2017 07:16:40 +0200 Subject: [PATCH 19/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 41323c13..b7026518 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "d5dd7f920b297188c308c982e7cf5762a678bd85" +github "SRGSSR/srgdataprovider-ios" "e33e7184c537abbf4f66ef1d55c54e0ad30fb20e" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From 5caebeb79f9cff696634fbea7873a1987607bb5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Mon, 3 Jul 2017 07:55:34 +0200 Subject: [PATCH 20/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index b7026518..73a0499f 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "e33e7184c537abbf4f66ef1d55c54e0ad30fb20e" +github "SRGSSR/srgdataprovider-ios" "b7fb0716edf9b9b6cb98bb4fbf5af381e6d791fb" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From d425867d26d4ae877d4a400a0c89112b02edc193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Mon, 3 Jul 2017 09:45:33 +0200 Subject: [PATCH 21/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 73a0499f..acaa1661 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "b7fb0716edf9b9b6cb98bb4fbf5af381e6d791fb" +github "SRGSSR/srgdataprovider-ios" "d6f9687682190cdb60c9e67d66042666611183fc" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From 739b8bd75e1a95beee84e88f6185fcec1e63a888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Mon, 3 Jul 2017 11:28:28 +0200 Subject: [PATCH 22/28] Update dependencies --- Cartfile.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index acaa1661..ecd4521b 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "d6f9687682190cdb60c9e67d66042666611183fc" +github "SRGSSR/srgdataprovider-ios" "e10137c1c5230519ae69891256eff5a0d119ca96" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From 0b151f64f4c79e73ab4df77390b50979e41ab999 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Mon, 3 Jul 2017 14:20:12 +0200 Subject: [PATCH 23/28] Update dependencies --- Cartfile | 2 +- Cartfile.resolved | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cartfile b/Cartfile index 352c6e39..7848d327 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1,3 @@ github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" -github "SRGSSR/srgdataprovider-ios" "feature/model-update" +github "SRGSSR/srgdataprovider-ios" "a7dbdaa103c919c67e063fcffafbb2020e2f7a4a" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index ecd4521b..9168b384 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "e10137c1c5230519ae69891256eff5a0d119ca96" +github "SRGSSR/srgdataprovider-ios" "a7dbdaa103c919c67e063fcffafbb2020e2f7a4a" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From cbb90c62e4089063d37fcbd236aefaf0d6c8be81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Wed, 5 Jul 2017 10:40:46 +0200 Subject: [PATCH 24/28] Update data provider dependency This update makes old comScore labels accessible through new properties --- Cartfile | 2 +- Cartfile.resolved | 2 +- ...MediaPlayerController+SRGAnalytics_DataProvider.m | 12 ++++++------ .../SRGSubdivision+SRGAnalytics_DataProvider.m | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Cartfile b/Cartfile index 7848d327..d144cc4e 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1,3 @@ github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" -github "SRGSSR/srgdataprovider-ios" "a7dbdaa103c919c67e063fcffafbb2020e2f7a4a" +github "SRGSSR/srgdataprovider-ios" "7bdcf2669b1247e8cd2b44cdc0e943a0381648a8" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index 9168b384..e6266b20 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "a7dbdaa103c919c67e063fcffafbb2020e2f7a4a" +github "SRGSSR/srgdataprovider-ios" "7bdcf2669b1247e8cd2b44cdc0e943a0381648a8" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" diff --git a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m index b9cbc4c9..0f8fc5ac 100644 --- a/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m +++ b/Framework_DataProvider/Sources/SRGMediaPlayerController+SRGAnalytics_DataProvider.m @@ -90,14 +90,14 @@ - (SRGRequest *)loadMediaComposition:(SRGMediaComposition *)mediaComposition } NSMutableDictionary *analyticsLabels = [NSMutableDictionary dictionary]; - if (mediaComposition.analyticsLabels) { - [analyticsLabels addEntriesFromDictionary:mediaComposition.analyticsLabels]; + if (mediaComposition.comScoreAnalyticsLabels) { + [analyticsLabels addEntriesFromDictionary:mediaComposition.comScoreAnalyticsLabels]; } - if (mediaComposition.mainChapter.analyticsLabels) { - [analyticsLabels addEntriesFromDictionary:mediaComposition.mainChapter.analyticsLabels]; + if (mediaComposition.mainChapter.comScoreAnalyticsLabels) { + [analyticsLabels addEntriesFromDictionary:mediaComposition.mainChapter.comScoreAnalyticsLabels]; } - if (resource.analyticsLabels) { - [analyticsLabels addEntriesFromDictionary:resource.analyticsLabels]; + if (resource.comScoreAnalyticsLabels) { + [analyticsLabels addEntriesFromDictionary:resource.comScoreAnalyticsLabels ]; } NSInteger index = [chapter.segments indexOfObject:mediaComposition.mainSegment]; diff --git a/Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.m b/Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.m index 347ace5e..8b7e0225 100644 --- a/Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.m +++ b/Framework_DataProvider/Sources/SRGSubdivision+SRGAnalytics_DataProvider.m @@ -28,7 +28,7 @@ - (BOOL)srg_isHidden - (NSDictionary *)srg_analyticsLabels { - return self.analyticsLabels; + return self.comScoreAnalyticsLabels; } @end From 9d2ab366413d0e69b10d22aa8b17a1b8386d17f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 6 Jul 2017 12:44:36 +0200 Subject: [PATCH 25/28] Update data provider --- Cartfile | 2 +- Cartfile.resolved | 2 +- Tests/Sources/DataProviderTestCase.m | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cartfile b/Cartfile index d144cc4e..133f69d1 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1,3 @@ github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" -github "SRGSSR/srgdataprovider-ios" "7bdcf2669b1247e8cd2b44cdc0e943a0381648a8" +github "SRGSSR/srgdataprovider-ios" "901481d4d387e34d384f4108dfdbfbcaa0cebdd4" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index e6266b20..5237f4a2 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "7bdcf2669b1247e8cd2b44cdc0e943a0381648a8" +github "SRGSSR/srgdataprovider-ios" "901481d4d387e34d384f4108dfdbfbcaa0cebdd4" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" diff --git a/Tests/Sources/DataProviderTestCase.m b/Tests/Sources/DataProviderTestCase.m index 8144f469..81704605 100644 --- a/Tests/Sources/DataProviderTestCase.m +++ b/Tests/Sources/DataProviderTestCase.m @@ -42,7 +42,7 @@ - (void)testPrepareToPlayMediaComposition XCTestExpectation *expectation = [self expectationWithDescription:@"Ready to play"]; SRGDataProvider *dataProvider = [[SRGDataProvider alloc] initWithServiceURL:ServiceTestURL() businessUnitIdentifier:SRGDataProviderBusinessUnitIdentifierSWI]; - [[dataProvider videoMediaCompositionWithUid:@"42297626" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { + [[dataProvider videoMediaCompositionWithUid:@"42297626" chaptersOnly:NO completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); [self.mediaPlayerController prepareToPlayMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { @@ -74,7 +74,7 @@ - (void)testPlayMediaComposition XCTestExpectation *expectation = [self expectationWithDescription:@"Ready to play"]; SRGDataProvider *dataProvider = [[SRGDataProvider alloc] initWithServiceURL:ServiceTestURL() businessUnitIdentifier:SRGDataProviderBusinessUnitIdentifierSWI]; - [[dataProvider videoMediaCompositionWithUid:@"42297626" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { + [[dataProvider videoMediaCompositionWithUid:@"42297626" chaptersOnly:NO completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { @@ -100,7 +100,7 @@ - (void)testPlaySegmentInMediaComposition }]; SRGDataProvider *dataProvider = [[SRGDataProvider alloc] initWithServiceURL:ServiceTestURL() businessUnitIdentifier:SRGDataProviderBusinessUnitIdentifierSRF]; - [[dataProvider videoMediaCompositionWithUid:@"99ac4dd4-8cd4-4883-8c80-0373d37cf0ad" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { + [[dataProvider videoMediaCompositionWithUid:@"99ac4dd4-8cd4-4883-8c80-0373d37cf0ad" chaptersOnly:NO completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { From e4bcc896a39f86fe7823ba28716f101a200af00a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 6 Jul 2017 13:45:29 +0200 Subject: [PATCH 26/28] Revert "Update data provider" This reverts commit 9d2ab366413d0e69b10d22aa8b17a1b8386d17f3. The new chapters-only service does not work well enough at the moment --- Cartfile | 2 +- Cartfile.resolved | 2 +- Tests/Sources/DataProviderTestCase.m | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cartfile b/Cartfile index 133f69d1..d144cc4e 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1,3 @@ github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" -github "SRGSSR/srgdataprovider-ios" "901481d4d387e34d384f4108dfdbfbcaa0cebdd4" +github "SRGSSR/srgdataprovider-ios" "7bdcf2669b1247e8cd2b44cdc0e943a0381648a8" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index 5237f4a2..e6266b20 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "901481d4d387e34d384f4108dfdbfbcaa0cebdd4" +github "SRGSSR/srgdataprovider-ios" "7bdcf2669b1247e8cd2b44cdc0e943a0381648a8" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" diff --git a/Tests/Sources/DataProviderTestCase.m b/Tests/Sources/DataProviderTestCase.m index 81704605..8144f469 100644 --- a/Tests/Sources/DataProviderTestCase.m +++ b/Tests/Sources/DataProviderTestCase.m @@ -42,7 +42,7 @@ - (void)testPrepareToPlayMediaComposition XCTestExpectation *expectation = [self expectationWithDescription:@"Ready to play"]; SRGDataProvider *dataProvider = [[SRGDataProvider alloc] initWithServiceURL:ServiceTestURL() businessUnitIdentifier:SRGDataProviderBusinessUnitIdentifierSWI]; - [[dataProvider videoMediaCompositionWithUid:@"42297626" chaptersOnly:NO completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { + [[dataProvider videoMediaCompositionWithUid:@"42297626" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); [self.mediaPlayerController prepareToPlayMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { @@ -74,7 +74,7 @@ - (void)testPlayMediaComposition XCTestExpectation *expectation = [self expectationWithDescription:@"Ready to play"]; SRGDataProvider *dataProvider = [[SRGDataProvider alloc] initWithServiceURL:ServiceTestURL() businessUnitIdentifier:SRGDataProviderBusinessUnitIdentifierSWI]; - [[dataProvider videoMediaCompositionWithUid:@"42297626" chaptersOnly:NO completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { + [[dataProvider videoMediaCompositionWithUid:@"42297626" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { @@ -100,7 +100,7 @@ - (void)testPlaySegmentInMediaComposition }]; SRGDataProvider *dataProvider = [[SRGDataProvider alloc] initWithServiceURL:ServiceTestURL() businessUnitIdentifier:SRGDataProviderBusinessUnitIdentifierSRF]; - [[dataProvider videoMediaCompositionWithUid:@"99ac4dd4-8cd4-4883-8c80-0373d37cf0ad" chaptersOnly:NO completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { + [[dataProvider videoMediaCompositionWithUid:@"99ac4dd4-8cd4-4883-8c80-0373d37cf0ad" completionBlock:^(SRGMediaComposition * _Nullable mediaComposition, NSError * _Nullable error) { XCTAssertNotNil(mediaComposition); [self.mediaPlayerController playMediaComposition:mediaComposition withPreferredStreamingMethod:SRGStreamingMethodNone quality:SRGQualityHD startBitRate:0 userInfo:nil resume:YES completionHandler:^(NSError * _Nonnull error) { From 9f144d71e30e847901d4f913c463175f6d62814d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 6 Jul 2017 14:15:44 +0200 Subject: [PATCH 27/28] Update dependencies to fixed versions --- Cartfile | 2 +- Cartfile.resolved | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cartfile b/Cartfile index d144cc4e..0485c394 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1,3 @@ github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" -github "SRGSSR/srgdataprovider-ios" "7bdcf2669b1247e8cd2b44cdc0e943a0381648a8" +github "SRGSSR/srgdataprovider-ios" "5.3" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index e6266b20..fba0382f 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,7 +2,7 @@ github "Mantle/Mantle" "2.1.0" github "SRGSSR/MAKVONotificationCenter" "4a127e52997889729286510103f7e27100223730" github "SRGSSR/SRGMediaPlayer-iOS" "2.0.2" github "SRGSSR/libextobjc" "cf5eb0c8a2f6f85636f1fb6a1f2083cbc74899f9" -github "SRGSSR/srgdataprovider-ios" "7bdcf2669b1247e8cd2b44cdc0e943a0381648a8" +github "SRGSSR/srgdataprovider-ios" "5.3" github "SRGSSR/srglogger-ios" "1.0" github "comScore/ComScore-iOS-SDK" "92f34897cd7659d56bb5a3e9e85b808cf3758bda" github "kif-framework/KIF" "v3.5.2" From 865874c4a3b9a9669c0e31844d199b1e8f8ca5e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 6 Jul 2017 14:17:18 +0200 Subject: [PATCH 28/28] Bump version number --- SRGAnalytics.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SRGAnalytics.xcodeproj/project.pbxproj b/SRGAnalytics.xcodeproj/project.pbxproj index 68b23e50..4d89105e 100644 --- a/SRGAnalytics.xcodeproj/project.pbxproj +++ b/SRGAnalytics.xcodeproj/project.pbxproj @@ -1099,7 +1099,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MARKETING_VERSION = 2.1.2; + MARKETING_VERSION = 2.2; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; @@ -1146,7 +1146,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MARKETING_VERSION = 2.1.2; + MARKETING_VERSION = 2.2; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; };