[iOS] handle universal links

This commit is contained in:
Aleksey Belouosv 2018-08-10 14:35:55 +03:00 committed by Aleksey Belousov
parent 586cc1d769
commit 83e2453793
2 changed files with 35 additions and 18 deletions

View file

@ -295,6 +295,24 @@ using namespace osm_auth_ios;
m_fileURL = nil;
}
- (NSURL *)convertUniversalLink:(NSURL *)universalLink
{
auto deeplink = [NSString stringWithFormat:@"mapsme://%@?%@", universalLink.path, universalLink.query];
return [NSURL URLWithString:deeplink];
}
- (void)searchText:(NSString *)searchString
{
if (!self.isDrapeEngineCreated)
{
dispatch_async(dispatch_get_main_queue(), ^{ [self searchText:searchString]; });
return;
}
[[MWMMapViewControlsManager manager] searchText:[searchString stringByAppendingString:@" "]
forInputLocale:[MWMSettings spotlightLocaleLanguageId]];
}
- (void)incrementSessionsCountAndCheckForAlert
{
[self incrementSessionCount];
@ -536,28 +554,27 @@ using namespace osm_auth_ios;
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray * restorableObjects))restorationHandler
{
if (![userActivity.activityType isEqualToString:CSSearchableItemActionType])
return NO;
NSString * searchStringKey = userActivity.userInfo[CSSearchableItemActivityIdentifier];
NSString * searchString = L(searchStringKey);
if (!searchString)
return NO;
if (!self.isDrapeEngineCreated)
if ([userActivity.activityType isEqualToString:CSSearchableItemActionType])
{
dispatch_async(dispatch_get_main_queue(), ^{
[self application:application
continueUserActivity:userActivity
restorationHandler:restorationHandler];
});
NSString * searchStringKey = userActivity.userInfo[CSSearchableItemActivityIdentifier];
NSString * searchString = L(searchStringKey);
if (searchString)
{
[self searchText:searchString];
return YES;
}
}
else
else if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb])
{
[[MWMMapViewControlsManager manager] searchText:[searchString stringByAppendingString:@" "]
forInputLocale:[MWMSettings spotlightLocaleLanguageId]];
auto link = userActivity.webpageURL;
if ([self checkLaunchURL:[self convertUniversalLink:link]])
{
[self handleURLs];
return YES;
}
}
return YES;
return NO;
}
- (BOOL)initStatistics:(UIApplication *)application

View file

@ -7,7 +7,7 @@
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:mapsme.onelink.me</string>
<string>applinks:dlinks.maps.me</string>
<string>applinks:dlink.maps.me</string>
</array>
</dict>
</plist>