Flutter 项目实战 截图分享到微信|QQ|微博 十二
Posted xmiaoshen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter 项目实战 截图分享到微信|QQ|微博 十二相关的知识,希望对你有一定的参考价值。
/ 截图功能演示 /
/ 跨进程通信案例 /
调用三方app进行支付 : 支付宝支付、微信支付、银行app支付 ........
调用三方app进行分享 : 微信分享、QQ分享、微博分享、钉钉分享、分享邮箱、打印、蓝牙.......
调用三方app进行登录 : 微信登录、QQ登录、微博登录、支付宝登录、Twitter登录(海外)、谷歌登录(海外)、FaceBook登录(海外) .......
/ 应用进程间通信 (IPC) /
进程间通信 (Interprocess communication) 就是不同进程之间传递或交换信息 。进程间是靠共享内存区域来进行彼此的互相访问 。IPC (Interprocess communication) 是一组编程接口,程序员能够协调不同的进程,能在一个操作系统里同时运行,并相互传递、交换信息。程序能够在同一时间里处理许多用户的要求。因为即使只有一个用户发出要求,也可能导致一个操作系统中多个进程的运行,进程之间必须互相通话。
IPC 方法 :
1、管道(PIPE)消息排队 (Message Queues) / 消息队列就是消息的一个链表,它允许一个或多个进程向它写消息,一个或多个进程从中读消息。
2、 旗语 (信号量)
3、 共用内存 (message queues,semaphores and shared memory)/ 一个进程创建,其余进程对这块内存区进行读写。
4、套接字(Socket)/ 套接字是通信的基石,是支持TCP/IP协议的路通信的基本操作单元。可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。
IPC 作用 :
1、进程间共享数据 / 进程操作共享数据
2、进程间数据传输 / 一个进程需要将它的数据发送给另一个进程
3、通知事件 / 进程间发送通知消息 (例如: 子进程结束通知父进程)
4、资源共享 / 多个进程之间共享同样的资源
5、进程控制 / 一个进程对另外一个进程控制 (例如: 拦截进程的异常)
/ android 通信的几种方式 /
Bundle&Intent / 实现了parcelable接口 / 可以将数据存储在Bundle中传递数据
SharedPerference / 多个进程的应用,可以对磁盘里的同一个文件读写。
Activity / 需要指定的是要访问的Activity所对应的Action(字符串)。有些Activity还需要指定一个Uri(通过 Intent构造方法的第2个参数指定)
Content Provider / 在多个应用程序之间数据共享的方式(跨进程共享数据)
Broadcast / 广播是一种被动跨进程通讯的方式。程序向系统发送广播时,其他的应用程序只能被动地接收广播数据。
Messager / 使用Messenger为服务提供接口。定义一个MessengerService继承自Service,并在AndroidManifest.xml中声明并给一个进程名,使该服务成为一个单独的进程。
AIDL / AIDL是一种接口描述语言,通常用于进程间通信。它用于让某个Service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个Service。
Socket / Socket 通信和 Binder 通信类似,也是一种 C/S 模型的通信方式
/ ios 通信的几种方式 /
URL scheme / 应用A通过openURL的方法跳转到应用B , 并且在URL种带上想要的参数 , 有点类似HTTP的get请求进行参数传递 。
Keychain / Keychain 安全的存储容器 (SQLite数据库) 。
UIPasteBoard / uipasteboard剪切板功能 , 利用系统剪切板功能来实现的。
UIDocumentInteractionController / 贡献文档、文档预览、打印、发邮件等复制功能
AirDrop / APP之间文档和数据的分享
UIActivityViewController / PP之间发送数据、分享数据和操作数据
APP Groups / 团队app开发 , app和extension共享读写空间, 实现数据共享
/ 监听手机系统剪切 /
Flutter工程 pubspec.yaml 文件下添加 flutter_screenshot_callback 依赖库配置 , 并执行flutter pub get 命令将依赖库导入到本地
import 'package:flutter/material.dart'; import 'package:flutter_screenshot_callback/flutter_screenshot_callback.dart'; class TestScreenPage extends StatefulWidget @override _MyAppState createState() => _MyAppState(); class _MyAppState extends State<TestScreenPage> implements IScreenshotCallback String _imagePath = 'Unknown'; late ScreenshotCallback _screenshotCallback; @override void initState() super.initState(); initCallback(); void initCallback() _screenshotCallback = ScreenshotCallback(); _screenshotCallback.startScreenshot(); _screenshotCallback.setInterfaceScreenshotCallback(this); @override void dispose() super.dispose(); _screenshotCallback.stopScreenshot(); @override Widget build(BuildContext context) return MaterialApp( home: Scaffold( backgroundColor: Colors.blue, appBar: AppBar( title: const Text('Plugin example app'), ), body: Center( child: Text('Image path: $_imagePath\\n'), ), ), ); @override deniedPermission() print("没有权限"); @override screenshotCallback(String data) async setState(() _imagePath = data; ); print('截图保存地址: $'$data'.substring('$data'.indexOf('/'), '$data'.length)');
触发安卓手机音量 减号 和 熄屏键 实现截图 (我是在红米手机下实现的)
Android 手机打印的图片保存的地址
IOS 打印的图片保存的地址
IOS f截图保存地址: /private/var/mobile/Containers/ Data/Application/9381C8B1-71C7-4FEB-84F2- 7636CEFDD481/tmp/screen_shot.png
/ 微信分享 /
Flutter 工程 pubspec.yaml 添加 fluwx 插件配置 , 并执行 flutter pub get 命令加载依赖
IOS 配置参数
Android配置参数
应用创建成功后获取appid
IOS LSApplicationQueriesSchemes 白名单配置
IOS xcode里面配置applinks 生成universalLink
配置AppId (Android/IOS) 和universalLink (IOS)
手机截图微信分享
Android 11 手机 微信分享错误提示 : sendReq failed for wechat app signature check
在应用的AndroidManifest.xml添加如下<queries>标签 , 指定微信包名
/ QQ 分享 /
Flutter 工程 pubspec.yaml 文件下配置 tencent_kit 依赖库配置 , 并执行flutter pub get 命令将依赖库导入到本地
创建应用获取AppId 并配置
IOS LSApplicationQueriesSchemes 白名单配置
IOS xcode里面配置applinks 生成universalLink
build.gradle下配置appid
配置appid和 universalLink
实现截图分享到QQ
Android 11 手机 微信分享错误提示 : sendReq failed for wechat app signature check
在应用的AndroidManifest.xml添加如下<queries>标签 , 指定QQ包名
/ 微博分享 /
flutter 工程 pubspec.yaml 添加 weibo_kit 依赖 , 并执行flutter pub get 命令将依赖库导入到本地
在添加依赖的过程中出现了下面的问题 , 这个问题没有得到解决
我直接下载了weibo_kit源码工程到工程里面进行依赖
IOS 填写包名
Android填写包名、签名、下载地址
获取 appKey
IOS LSApplicationQueriesSchemes 白名单配置
配置appKey和 universalLink
图片剪切并实现微博分享
/ pod install github.com:443 /
github访问缓慢
主要原因github访问非常缓慢 , 执行 pod install 下载依赖无法顺利进行
找到电脑硬盘上的 .gitconfig 文件
open ~/.gitconfig
替换github配置
在文件末尾添加
[url "https://github.com.cnpmjs.org/"] insteadOf = https://github.com/
以上是关于Flutter 项目实战 截图分享到微信|QQ|微博 十二的主要内容,如果未能解决你的问题,请参考以下文章
asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间