Skip to content

surfstudio/surf-yandex-maps-ios-sdk-full

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

YandexMapsMobile, Full version

Binary Framework as Swift Package with Yandex mobile maps (full version).

Yandex mobile maps lite version you can find here.

🎉 Works on Apple silicone without Rosetta mode.

Requirements

  • iOS 13.0

Swift Package Manager

To integrate YandexMapsMobile into your project using SwiftPM do this 👇🏻

  • File > Swift Packages > Add Package Dependency
  • Add https://github.com/surfstudio/surf-yandex-maps-ios-sdk-full.git
  • Select "Up to Next Major" with "4.8.0"

or add the following code to your Package.swift:

dependencies: [
    .package(url: "https://github.com/surfstudio/surf-yandex-maps-ios-sdk-full.git", revision: "4.8.0"),
],

or via XcodeGen insert into your project.yml:

name: YourProjectName
options:
  deploymentTarget:
    iOS: 13.0
packages:
  YandexMapsMobile:
    url: https://github.com/surfstudio/surf-yandex-maps-ios-sdk-full
    from: 4.8.0
targets:
  YourTarget:
    type: application
    ...
    dependencies:
       - package: YandexMapsMobile

Recommedations to use

Using on Apple silicon without Rosetta mode
  1. You should init YMKMapView with vulkanPreferred: true
YMKMapView.init(frame: .zero, vulkanPreferred: isM1Simulator())

....

    #if targetEnvironment(simulator)
    public static func isM1Simulator() -> Bool {
        return TARGET_CPU_ARM64 != 0
    }
    #else
    public static func isM1Simulator() -> Bool { false }
    #endif
  1. Call YMKMapKit.sharedInstance() in AppDelegate as in example
/**
If you create instance of YMKMapKit not in application:didFinishLaunchingWithOptions: 
you should also explicitly call YMKMapKit.sharedInstance().onStart()
*/
YMKMapKit.sharedInstance()
Latest recommendations for project settings

to build project you should add following linker flags in the Build Settings tab:

frameworks:
    "CoreFoundation",
    "Foundation",
    "CoreLocation",
    "UIKit",
    "OpenGLES",
    "SystemConfiguration",
    "CoreGraphics",
    "QuartzCore",
    "Security",
    "CoreTelephony",
    "CoreMotion"
libraries:
    "resolv",
    "c++"

as in the screenshot:

Screenshot 2024-02-09 at 23 33 46
YandexMapsMobile as subpackage

If you use YandexMapsMobile as subdependency in your own package you should probably add linkerSettings to the target for successful building:

targets: [
    .target(
        name: "Your target",
        dependencies: [
            .product(name: "YandexMapsMobile", package: "surf-yandex-maps-ios-sdk-full")
        ],
        linkerSettings: [ // <===== ‼️LOOK HERE‼️
            .linkedFramework("CoreLocation"),
            .linkedFramework("CoreTelephony"),
            .linkedFramework("SystemConfiguration"),
            .linkedFramework("CoreMotion"),
            .linkedFramework("DeviceCheck"),
            .linkedLibrary("c++"),
            .unsafeFlags(["-ObjC"]),
        ]),
]

Special thanks

Based on work in this repo ❤️