mym0404 / react-native-kakao

🟡 Kakao SDK All-In-One Solution Supports Android, iOS, Web, New architecture, Old Architecture, Expo
https://rnkakao.dev
MIT License
36 stars 0 forks source link

[BUG]: `shareFeedTemplate` throws an error when using `{ios | android}ExecutionParams` #35

Open lifeisegg123 opened 5 days ago

lifeisegg123 commented 5 days ago

Is there an existing issue for this?

Name, Version of @react-native-kakao/*

share, 2.2.4

Version of react-native

0.73.6

What os are you seeing the problem on?

iOS

What device types are you seeing the problem on?

Physcial Device

What architecture types of react native are you seeing the problem on?

Old Architecture(Bridge)

Version of device(android API, iOS OS version, etc...)

iOS 17.5.1

Expo App

What happened?

The shareFeedTemplate method throws an error when using {ios | android}ExecutionParams only on iOS: [Error: 올바른 포맷이 아니기 때문에 해당 데이터를 읽을 수 없습니다.]

Here’s a sample structure I pass as an argument:

{
  template: {
    content: {
      title: 'some title',
      imageUrl: 'url to some image',
      link: {
        mobileWebUrl: 'url to some mobile web url',
        webUrl: 'url to some web url',
        androidExecutionParams: {
          sample1: String(1),
          sample2: String(10),
        },
        iosExecutionParams: {
          sample1: String(1),
          sample2: String(10),
        },
      },
    },
  },
}

When I wrap the object with JSON.stringify to pass it as a string, it works fine on iOS but not on Android.

I think this may happen because the Android & Flutter Kakao SDKs accept Map<string, string> (reference), but others expect a String.

Relevant a package.json.

No response

Relevant log output

No response

Code of Conduct

mym0404 commented 5 days ago

Please attach code calls this package's api

lifeisegg123 commented 5 days ago

I've called it like this, and this happened as well when I'm using shareTextTemplate.

import { shareFeedTemplate } from '@react-native-kakao/share'

...
try {
    shareFeedTemplate({
      template: {
        content: {
          title: 'some title',
          imageUrl: 'url to some image',
          link: {
            mobileWebUrl: 'url to some mobile web url',
            webUrl: 'url to some web url',
            androidExecutionParams: {
              sample1: String(1),
              sample2: String(10),
            },
            iosExecutionParams: {
              sample1: String(1),
              sample2: String(10),
            },
          },
        },
      },
    })
} catch (e) {
  console.error(e)
}