2017-04-09 5 views
0

좋아요, 저는 URL 쿼리에 익숙하지 않고 스위프트의 전체적인 측면에 도움이 필요합니다. 있는 그대로, 나는 SKScene을 포함하는 iMessage 앱을 가지고 있습니다. 사용자가 게임을 번갈아 가며 진행하려면 여기에서 배운대로 1 세션 내에서 메시지를 앞뒤로 보내야합니다 : https://medium.com/lost-bananas/building-an-interactive-imessage-application-for-ios-10-in-swift-7da4a18bdeed.Swift3의 SKScene 및 URLQueryItems?

지금까지는 모든 장면이 제대로 작동하지만 Apple의 아이스크림 데모에서는 앞뒤로 연속적으로 아이스크림을 보내고 있습니다. SKScene의 모든 내용을 "쿼리"하는 방법을 이해할 수 없으므로 보낼 수 있습니다. 장면.

URLQueryItem 작업이 설명서가 스프라이트 키트 장면과 관련이없는 것처럼 불분명합니다.

init?(queryItems: [URLQueryItem]) { 
      var base: Base? 
      var scoops: Scoops? 
      var topping: Topping? 

      for queryItem in queryItems { 
       guard let value = queryItem.value else { continue } 

       if let decodedPart = Base(rawValue: value), queryItem.name == Base.queryItemKey { 
        base = decodedPart 
       } 
       if let decodedPart = Scoops(rawValue: value), queryItem.name == Scoops.queryItemKey { 
        scoops = decodedPart 
       } 
       if let decodedPart = Topping(rawValue: value), queryItem.name == Topping.queryItemKey { 
        topping = decodedPart 
       } 
      } 

      guard let decodedBase = base else { return nil } 

      self.base = decodedBase 
      self.scoops = scoops 
      self.topping = topping 
     } 
    } 

fileprivate func composeMessage(with iceCream: IceCream, caption: String, session: MSSession? = nil) -> MSMessage { 
     var components = URLComponents() 
     components.queryItems = iceCream.queryItems 

     let layout = MSMessageTemplateLayout() 
     layout.image = iceCream.renderSticker(opaque: true) 
     layout.caption = caption 

     let message = MSMessage(session: session ?? MSSession()) 
     message.url = components.url! 
     message.layout = layout 

     return message 
    } 
} 

그러나 나는 밖으로 찾을 수 없습니다 방법 "쿼리"는 SKScene에 :

애플은이 같은 현재 상태에서 자신의 "아이스크림"을 조회합니다. SKScene을 앞뒤로 "보낼"수 있습니까? 이것이 가능한가?

답변

1

SKScene을 앞뒤로 보낼 필요가 없습니다. 게임 설정과 관련된 정보 (예 : 회전 수 또는 회전 수 등)를 정보로 보내십시오. 다른 끝에서 앱에서 액세스하여 장면을 만들 수 있습니다.

장면을 설정하는 방법과 다른 플레이어의 세션에 대해받은 정보와 상호 작용하는 방법을 알지 못하면 구체적으로 말할 수 없습니다. 그러나 정보를 전달하는 데 URLQueryItem을 사용하는 경우 수행해야하는 작업은 장면의 쿼리 항목 목록을 검색하고 수신 된 값을 기반으로 장면을 설정하기 만하면됩니다.

어떻게 할 수 있는지 궁금한 점이 있다면 전체 프로젝트를 공유하거나 특정 플레이어로부터 메시지를 보내는 위치와 상대방 플레이어가 정보를받는 방식에 관한 관련 코드 비트를 게시하는 경우 장면을 설정하면, (또는 다른 누군가) 도울 수 있어야합니다.

위의 코드에서 을 보면 특정 코드 예제에서 장면/게임 정보가 다른 사용자에게 전송되는 방법을 알 수 있습니다. 프로세스의 다른 끝에서 수신 된 메시지의 URL 매개 변수가 여러 쿼리 항목에 대한 값을 얻기 위해 분해 된 다음 해당 값을 기반으로 장면이 설정됩니다. 장면을 어떻게 설정해야하는지 파악하기 위해이 작업이 어떻게 수행되는지 살펴보십시오.

+0

감사합니다. 그래, 알아 냈지만 문자열을 저장할 수있는만큼 문제가 있습니다. http://stackoverflow.com/questions/43334841/can-you-send-objects-other에서보세요. -than-strings-in-urlqueryitems – skyguy

+0

도움이되어서 기쁘다 :) 나는 당신의 다른 질문에도 대답했습니다. 잘하면, 그게 도움이 ... – Fahim