Skip to content
This repository has been archived by the owner on Feb 20, 2023. It is now read-only.

Integrate the new SDK to support mini program #526

Open
wants to merge 15 commits into
base: master
Choose a base branch
from

Conversation

little-snow-fox
Copy link

使用全新的 wechat SDK,更换掉目前年份已久的SDK。

重写大部分接口,包含微信登陆、注册SDK、分享文本、分享图片、分享视频、分享网页、分享小程序、跳转到小程序等接口,并且以上接口在 IOS 和 Android 下通过简单的测试。

由于本次更新核心代码几乎重写,所以请谨慎合并,避免影响正在使用该库的用户,特别是他们的生产环境。

@gdoudeng
Copy link

大佬喝茶

docs/build-setup-ios.md Outdated Show resolved Hide resolved
docs/build-setup-ios.md Outdated Show resolved Hide resolved
index.js Outdated Show resolved Hide resolved
index.js Outdated Show resolved Hide resolved
Copy link
Owner

@yorkie yorkie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@little-snow-fox 能保持与原来的接口兼容吗?这样会导致之前的应用都需要重写,多谢!

@yorkie
Copy link
Owner

yorkie commented Oct 14, 2019

重写大部分接口,包含微信登陆、注册SDK、分享文本、分享图片、分享视频、分享网页、分享小程序、跳转到小程序等接口,并且以上接口在 IOS 和 Android 下通过简单的测试。

能否只是在原代码基础上新增:升级 SDK、分享小程序以及跳转小程序,这样的话 PR 会更容易被合并进来。

@little-snow-fox
Copy link
Author

little-snow-fox commented Oct 14, 2019

确实,方法名称与用法的变更对已使用该库的用户影响相当大,这也是我迟迟不肯推送合并的原因。
为了与微信官方文档用法保持一致,而没沿用该库原来的方法名称和用法,确实是我考虑不周,这需要专门花时间来处理。
谢谢你抽出宝贵的时间来审查代码~

@yorkie
Copy link
Owner

yorkie commented Oct 14, 2019 via email

@little-snow-fox
Copy link
Author

@yorkie 太好了,很高兴你能够参与。

@yorkie
Copy link
Owner

yorkie commented Oct 15, 2019

@little-snow-fox @M1sery 我基于这个 PR 的基础,做了一些改动(307ed4e)主要如下:

  • 根据现有 API 的向后兼容
  • 重构了 Android 部分的实现,将大部分参数相关逻辑移到了 JS 层实现
  • 基于原有基础上,添加了分享小程序与打开小程序的功能

请两位帮忙一起看看,如果没有什么问题,iOS 部分我将在这个 PR 内继续完成。

@yorkie yorkie added the major label Oct 15, 2019
@yorkie
Copy link
Owner

yorkie commented Oct 15, 2019

我也添加到了 major 标签,这个 PR 合并后,Release 版本需要变更为:2.0.0

I also labeled this PR as major, after this, the next release will be 2.0.0 :)

@little-snow-fox
Copy link
Author

little-snow-fox commented Oct 15, 2019

@yorkie 关于被微信移除掉的 registerAppWithDescription 方法,我想提出一个兼容性方案,为了不影响正在使用本库的用户,我们可以保留 registerAppWithDescription 接口,然后把它指向 SDK 的 registerApp 方法,并且给出一个 console.warn 警告用户它已经被移除掉。你觉得这样做可以吗?

@yorkie
Copy link
Owner

yorkie commented Oct 15, 2019

@yorkie 关于被微信移除掉的 registerAppWithDescription 方法,我想提出一个兼容性方案,为了不影响正在使用本库的用户,我们可以保留 registerAppWithDescription 接口,然后把它指向 SDK 的 registerApp 方法,并且给出一个 console.warn 警告用户它已经被移除掉。你觉得这样做可以吗?

我觉得没问题,不过我记得 Node.js 有专用的 deprecation 方法,不确定 ReactNative 是否也有类似方法。

@little-snow-fox
Copy link
Author

@yorkie 请问你这边修改 JavaScript 接口代码的时候,有修改过 Object-c 和 Java 方面的代码吗?我似乎没看到这方面的修改记录。

@yorkie
Copy link
Owner

yorkie commented Oct 16, 2019 via email

@little-snow-fox
Copy link
Author

@yorkie 如果只是修改了 JavaScript 层面的代码,这个库将没法跑起来,因为核心的地方是 object-c 和 java 方面的代码, JavaScript 层的接口方法修改后需要到 IOS 和 Android 目录实现相应功能。。。

@yorkie
Copy link
Owner

yorkie commented Oct 16, 2019

@yorkie 如果只是修改了 JavaScript 层面的代码,这个库将没法跑起来,因为核心的地方是 object-c 和 java 方面的代码, JavaScript 层的接口方法修改后需要到 IOS 和 Android 目录实现相应功能。。。

307ed4e#diff-f5be6a637f5cc216645c25e9e3402450L61 可以看这里

@little-snow-fox
Copy link
Author

@yorkie 但是我似乎找不到 Object-c 的改动。

@yorkie
Copy link
Owner

yorkie commented Oct 16, 2019

嗯,iOS 的部分我稍后会加上,我们先基于 Android 和 JS 代码的基础来讨论对外的接口,以及浇水层接口的方式是否合适 :)

builder = builder.setResizeOptions(resizeOptions);
}
// if (resizeOptions != null) {
// builder = builder.setResizeOptions(resizeOptions);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@little-snow-fox 为什么我们这里要抛弃掉原来使用的 setResizeOptions 而自己实现,我对 Android 不是很熟,所以想问一下。

Copy link
Author

@little-snow-fox little-snow-fox Oct 16, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

因为这个方法只是对图片进行分辨率大小裁剪而已,并不是压缩大小,无法保证裁剪出来后的图片大小不超过32kb。

ios/README.txt Outdated
@@ -0,0 +1,114 @@
重要!
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个 README.txt 是否可以删除,微信 SDK 的更新日志放在这感觉没有必要。

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

可以的,但我希望有个地方可以记录当前的 SDK 版本号。

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

可以的,但我希望有个地方可以记录当前的 SDK 版本号。

根目录的 README.md 里有相应的 SDK 版本的。

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

好的,明白。

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个问题在之后 iOS 修改后解决吧,现在大家先集中 Review 下 Android + JS 层的代码吧。

Copy link
Collaborator

@0xinhua 0xinhua left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@little-snow-fox @yorkie 测试 Android 部分代码时发现两个问题,帮忙再 review 一下。

}

if (imgUrl == null) {
callback.invoke(null);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
callback.invoke(null);
callback.invoke(new Object[]{});

@yorkie 这里对于非 varargs 的调用, 使用 Object[], 不然编译报错。

imgUrl = Uri.parse(data.getString("imageUrl"));
if (imgUrl.getScheme() == null) {
// handle static resource if no schema is provided.
imgUrl = getResourceDrawableURI(getReactApplicationContext(), imgUrl);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yorkie 看一下这块代码,这里 imgUrl 是 Uri 类型,再转换为 String 类型编译会报错。

* fix: Bitmap to byte[] compile error
* fix: remove spaces and format code
Copy link
Collaborator

@0xinhua 0xinhua left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@little-snow-fox @yorkie 这里我顺便修改了一下 bitmapTopBytes 方法。=> fix commit

@yorkie
Copy link
Owner

yorkie commented Nov 6, 2019

最新的提交里修改了一些 iOS 上的错误,不过还有一些库依赖问题。

* fix: format comments
message.messageExt = data.getString("messageExt");
}
if (thumb != null) {
if (thumb.length() / 1024 > THUMB_SIZE) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里直接使用 thumb.length() 拿不到 thumb 的大小,我明天再提个 pr 修复这个问题。

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里直接使用 thumb.length() 拿不到 thumb 的大小,我明天再提个 pr 修复这个问题。

@yorkie 已修复,在这个 PR

Copy link
Collaborator

@0xinhua 0xinhua left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

private static byte[] bitmapTopBytes(Bitmap bitmap, final boolean needRecycle) { }

这里方法名 bitmapTopBytes 拼错了,准确的命名应该是 bitmapToBytes 。

* fix: rename bitmapTopBytes => bitmapToBytesArray
@snail714
Copy link

大佬们,什么时候能支持跳转小程序啊

@0xinhua
Copy link
Collaborator

0xinhua commented Dec 15, 2019

@little-snow-fox @yorkie 有空找个时间一起把这个 pr 的改动再捋一遍,列个 TODO list,测试完看能不能更一版。

@KingAmo
Copy link
Contributor

KingAmo commented Dec 15, 2019

等了很久的这个PR了,大佬们辛苦了 👍

@LuDongWei
Copy link

大佬们辛苦了, 我们想更新这个版本,可以的话,我们可以在项目中先更新这个PR方便测试发现问题。

@lp4298707
Copy link

时刻关注这个PR,感谢大佬们的贡献

@wong2
Copy link

wong2 commented Feb 13, 2020

还在进行吗?

@gdoudeng
Copy link

还在进行吗?

我项目都写完几个了,这个pr居然还没合并

@wong2
Copy link

wong2 commented Feb 14, 2020

@gdoudeng 感觉有点难了,我直接用 little-snow-fox/react-native-wechat-lib 了

@wong2
Copy link

wong2 commented Feb 14, 2020

我觉得既然微信SDK都大版本更新了,这边也没必要一定要保持和之前接口的兼容,愿意更新到大版本的需要接受breaking change

@gdoudeng
Copy link

@gdoudeng 感觉有点难了,我直接用 little-snow-fox/react-native-wechat-lib 了

合理,新项目用它完全可以

@ccksfh
Copy link

ccksfh commented Mar 19, 2020

这个pr流产了吗?伤心...

@vance-liu
Copy link

我打算搞下来自己维护了。。。伤心。。。

@hengkx
Copy link

hengkx commented May 22, 2020

还处理吗?

@youngjuning
Copy link

还在维护吗?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet