提交 93d5442e authored 作者: JarvanMo's avatar JarvanMo

update doc and add English support

上级 83bcc263
![logo](./arts/fluwx_logo.png)
适用于Flutter的微信SDK,方便快捷。
## 使用需知
使用`Fluwx`之前,强烈建议先阅读[微信SDK官方文档](https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1)
这有助于你使用`Fluwx`
### 目前功能
* 文本分享。
* 网站分享。
* 图片分享。
* 音乐分享。
* 视频分享。
* 小程序分享。
* 发送Auth认证。
## 技术参数
Android部分使用到了`kotlin-1.2.60`。以下是Android部分所涉及到的技术:
```gradle
api 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.1.4'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.24.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:0.24.0'
implementation 'top.zibin:Luban:1.1.8'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
```
iOS部分涉及到的技术:
```podspec
s.dependency 'WechatOpenSDK','~> 1.8.2'
```
Flutter版本信息<br>
> Flutter 0.7.5 channel dev https://github.com/flutter/flutter.git<br>
> Framework revision eab5cd9853 (4 days ago) 2018-08-30 14:47:04 -0700<br>
> Engine revision dc7b5eb89d<br>
> Tools Dart 2.1.0-dev.3.0.flutter-760a9690c2<br>
## 引入
在`pubspec.yaml`文件中添加如下代码:
```yaml
dependencies:
fluwx: ^0.1.3
```
## 初始化
使用`Fluwx`前,需要进行初始化操作:
```dart
Fluwx.registerApp(RegisterModel(appId: "your app id", doOnAndroid: true, doOnIOS: true));
```
- `appId`:在微信平台申请的appId。
- `doOnAndroid`:是否在android平台上执行此操作。
- `doOnIOS`:是否在平台上执行此操作。</br>
每一个字段都是非必须的,但是如果不传`appId`或`doOnAndroid: false`或者`doOnIOS: false`,请务必手动注册`WXApi`以保证`Fluwx`正常工作。
注册完成后,请在使用`Fluwx`前在对应平台添加如下代码:
Android上:
```kotlin
FluwxShareHandler.setWXApi(wxapi)
```
iOS上:
```objective-c
isWeChatRegistered = YES;
```
> 注意:尽管可以通过Fluwx完成微信注册,但一些操作依然需要在对应平台进行设置,如配置iOS的URLSchema,Android上的WXEntryActivity等。
### 传送门
* [分享](./doc/SHARE.md)
* [Auth](./doc/SEND_AUTH.md)
* [支付](./doc/WXPay.md)
* [回调](./doc/RESPONSE.md)
### 更多功能敬请请期待
## LICENSE
Copyright 2018 OpenFlutter Project
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for
additional information regarding copyright ownership. The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License.
### 微信调回
微信的回调也要根据平台的不同进行差异化处理(如果你不需要回调,请忽略)。
### Android
由于机制问题,`Android`端需要在`WXEntryActivity``WXPayEntryActivity`中添加如下代码:
```kotlin
override fun onResp(resp: BaseResp) {
FluwxResponseHandler.handleResponse(resp)
}
```
你也可以直接继承`FluwxWXEntryActivity`
`WXEntryActivity``WXPayEntryActivity`创建规则请参阅官方文档。具体可以参考[example wxapi](https://github.com/OpenFlutter/fluwx/tree/master/example/android/app/src/main/kotlin/net/sourceforge/simcpux/wxapi )
,也不要忘记在`AndroidManifest.mxl`中注册:
```xml
<activity
android:name="your.package.name.registered.on.wechat.wxapi.WXEntryActivity"
android:theme="@style/DisablePreviewTheme"
android:exported="true"
android:launchMode="singleTop"/>
<activity
android:name="your.package.name.registered.on.wechat.wxapi.WXPayEntryActivity"
android:theme="@style/DisablePreviewTheme"
android:exported="true"
android:launchMode="singleTop"/>
```
### iOS
在你的`AppDelegate.m`中重写下面方法:
```objective-c
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [WXApi handleOpenURL:url delegate:[FluwxResponseHandler responseHandler]];
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
return [WXApi handleOpenURL:url delegate:[FluwxResponseHandler responseHandler]];
}
```
### Flutter
```dart
_fluwx.response.listen((response){
//do something
});
```
从微信回调的值为`WeChatResponse`,其实`type`字段为枚举:
```dart
enum WeChatResponseType {
SHARE,
AUTH,
PAYMENT }
```
`result`为微信回传的值,其类型为`Map`,具体返回值请参阅微信官方文档,但均额外包含一个
`platform`字段,其值为`android`或者`iOS`,以便开发者作差异化处理。
## 发送Auth验证
`Fluwx`目前只支持获取`code`,若要获取`access_token`请在服务器端完成。
```dart
fluwx.sendAuth(WeChatSendAuthModel(
scope: "snsapi_userinfo",
state:"wechat_sdk_demo_test",
));
```
### 返回值处理
`fluwx.share(model)`返回的是一个`Map`
```dart
{
"platform":"Android",//或者iOS
result:true //或者false,取决于WXApi.sendRequest()的结果
}
```
\ No newline at end of file
### 简述
目前`Fluwx`并不是支持所有的分享类型,目前仅支持文本分享、图片分享、网址分享
音乐、视频以及小程序的分享。未来会考虑增加更多支持。
> 注意:目前分享中涉及到图片的地方仅支持`png`和`jpg`,支持网络图片及`assets`图片。<br>
> 使用`assets`图片需要添加`assets://`。<br>
> 也可以在`assets`图片添加`?package=package_name`以读取指定包的图片。<br>
> 未来可能支持`file://`,目前以`file://`图片不会做任何处理。<br>
> 如果不指定schema或者schema错误,将会被处理为网络图片,请谨慎。<br>
> 由于微信的限制,一般的缩略图要小于32k(小程序的缩略图要小于120k),所以在使用缩略的时候<br>
> 很有必要使用一张合格的缩略图,否则`Fluwx`进行压缩,其结果可能并不是你所预期的。
### 分享去处
绝大部分分享可以分享到会话,朋友圈,收藏(小程序目前只能分享到会话)。默认分享到会话。
```dart
///[WeChatScene.SESSION]会话
///[WeChatScene.TIMELINE]朋友圈
///[WeChatScene.FAVORITE]收藏
enum WeChatScene {
SESSION,
TIMELINE,
FAVORITE
}
```
### 返回值处理
`fluwx.share(model)`返回的是一个`Map`
```dart
{
"platform":"Android",//或者iOS
result:true //或者false,取决于WXApi.sendRequest()的结果
}
```
### 分享文本
```dart
fluwx.share(WeChatShareTextModel(
text: "text from fluwx",
transaction: "transaction}",//仅在android上有效,下同。
scene: scene
));
```
### 分享图片
```dart
fluwx.share(WeChatShareImageModel(
image: _imagePath,
thumbnail: _thumbnail,
transaction: _imagePath,
scene: scene,
description: "image"));
```
> 注意:如果不指定 `thumbnail`,那么`Fluwx`将尝试从`image`中获取缩略图。
### 分享音乐
```dart
var model = WeChatShareMusicModel(
title: _title,
description: _description,
transaction: "music",
musicUrl: _musicUrl,
musicLowBandUrl: _musicLowBandUrl
);
fluwx.share(model);
```
音乐的分享有两种:`musicUrl``musicLowBandUrl`。这两种形式是不共存的,如果
都二者都进行了赋值,那么只会读取`musicUrl`
### 分享视频
```dart
var model = new WeChatShareVideoModel(
videoUrl: _videoUrl,
transaction: "video",
videoLowBandUrl: _videoLowBandUrl,
thumbnail: _thumnail,
description: _description,
title: _title
);
fluwx.share(model);
```
视频的分享有两种:`videoUrl``videoLowBandUrl`。这两种形式是不共存的,如果
都二者都进行了赋值,那么只会读取`videoUrl`
### 分享小程序
```dart
var model =new WeChatShareMiniProgramModel(
webPageUrl: _webPageUrl,
miniProgramType: WeChatShareMiniProgramModel.MINI_PROGRAM_TYPE_RELEASE,
userName: _userName,
title: _title,
description: _description,
thumbnail: _thumbnail
);
fluwx.share(model);
```
`miniProgramType`仅支持三种:
* MINI_PROGRAM_TYPE_RELEASE
* MINI_PROGRAM_TYPE_TEST
* MINI_PROGRAM_TYPE_PREVIEW
# 微信支付
### 拉起支付 ### Pay
```dart ```dart
Fluwx fluwx = new Fluwx(); Fluwx fluwx = new Fluwx();
...@@ -17,14 +16,15 @@ fluwx.pay(WeChatPayModel( ...@@ -17,14 +16,15 @@ fluwx.pay(WeChatPayModel(
extData: '选填' extData: '选填'
)); ));
``` ```
### 返回值处理 ### Return
注:此返回值是此方法调用的直接返回值,并非支付之后的回调,回调请查看[相关文档](./RESPONSE.md) The return value of `fluwx.share(model)` is a `Map`
`fluwx.pay(model)`返回的是一个`Map` `fluwx.pay(model)`返回的是一个`Map`
```dart ```dart
{ {
"platform":"Android",//或者iOS "platform":"Android",//or iOS
result:true //或者false,取决于WXApi.sendRequest()的结果 result:true //or false,depends on WXApi.sendRequest()
} }
``` ```
For the response from WeChat,read [RESPONSE](./doc/RESPONSE.md) please.
\ No newline at end of file
# 微信支付
### 拉起支付
```dart
Fluwx fluwx = new Fluwx();
fluwx.pay(WeChatPayModel(
appId: 'wxd930ea5d5a258f4f',
partnerId: '1900000109',
prepayId: '1101000000140415649af9fc314aa427',
packageValue: 'Sign=WXPay',
nonceStr: '1101000000140429eb40476f8896f4c9',
timeStamp: '1398746574',
sign: '7FFECB600D7157C5AA49810D2D8F28BC2811827B',
signType: '选填',
extData: '选填'
));
```
### 返回值处理
注:此返回值是此方法调用的直接返回值,并非支付之后的回调,回调请查看[相关文档](./RESPONSE.md)
`fluwx.pay(model)`返回的是一个`Map`
```dart
{
"platform":"Android",//或者iOS
result:true //或者false,取决于WXApi.sendRequest()的结果
}
```
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论