iOS 13.7 이하에서 BigInt() 쓸 수 없는 이슈

상황

request에 bigint 타입의 값을 넣어줘야 하는 경우가 있었는데,

string 타입을 bigint 타입으로 넘겨줘야할 때가 있었다.

다른 api에서 호출한 값인 string 타입의 id를 다른 api의 request에 필요한 bigint 타입의 값으로 넘겨줘야했다.

초기 시도

처음에는 BigInt()를 사용해서 형변환을 해주어 다음과 같이 전달했다.

// productId: bigint, product.id: string
{
  product: BigInt(product.id)
}

발생 이슈

iOS 13.x 버전에서는 위 코드가 포함되어있는 페이지가 흰화면으로 나오는 이슈가 있었다.

해당 버전의 시뮬레이터에서 확인해보니 BigInt() 사용으로 인한 에러 때문이었다.

대부분 iOS 14 이상의 버전을 사용하지만 iOS 13버전 사용자도 꽤 있어 처리가 필요했다.

확인해보니 iOS 13.7 버전 이하에서는 BigInt()를 사용할 수 없었다.

can-i-use

해결

protoInt64.parse()를 사용해서 다음과 같이 변환하면 된다.

// productId: bigint, product.id: string
{
  productId: protoInt64.parse(product.id)
}

마무리

13버전이면 꽤 예전 버전이라 사용자가 적기도 해서 대응하지 않는 경우도 보았지만 같은 상황이 발생하면 위와 같이 대응하면 된다. 그리고 같은 값인데도 api마다 타입이 다르게 되어있는 경우가 많은데, 값마다 사전에 정의해둔 타입으로 통일해서 사용하는 게 좋을 것 같다.


Written by@jaeeun
I explain with words and code. I explain with words and code. I explain with words and code.