dux社会化分享代码_sharesdk一句代码即可分享,快速实现社会化分享组件

一、ShareSDK新增功能

——应用信息配置文件,分享内容配置文件使用说明

概览:为了开发者更方便的使用ShareSDK并实现分享功能,在使用ShareSDK的时候可以直接配置名为ShareSDK.xml 以及 ShareContent.xml 的XML格式文件,实现快速分享,有效减少代码的数量,并实现”一句代码即可分享”功能。(两个文件可以单独使用,没有互相依赖关系;但是对于希望节省代码并快速简单实现分享的用户来说,建议两个文件同时使用)

【具体用例请参考 Demo 中的 IntergratingShareSDKWithConfigurationFile 示例项目】

二、ShareSDK.xml

用于配置各平台的应用配置信息。可以在ShareSDK.xml填写各个平台的配置信息例如appkey,appid等。ShareSDK.xml文件位于Optional文件中的ShareSDKConfigFile.bundle资源文件中。使用的时候请解开注释,并填入您自己的应用配置信息(请勿改动任何参数名称,仅修改您需要传入的应用配置信息即可)。填写完毕好请保存好,即可免去ShareSDK原来的初始化方法,自动进行各个平台的初始化。(注:对于需要使用原生SDK的平台,仍需要写连接器的链接方法)

该文件的配置格式请参考Demo所提供的ShareSDK.xml文件

F9DDB9A5-B39B-4E02-9F4E-E93C97AF5064.png

ShareSDK.xml示例

二、ShareContent.xml

用于配置分享内容。文件同样存放于Optional文件中的ShareSDKConfigFile.bundle资源文件中。该文件搭配ShareSDK中新增的接口使用

1

2

3

4

5

6

7

+ (void)shareWithContentName:(NSString *)contentName

platform:(SSDKPlatformType)platformType

customFields:(NSDictionary *)customFields

onStateChanged:(SSDKShareStateChangedHandler)stateChangedHandler;

用法说明:

1.先配置好ShareContent.xml文件:

i.文件中的节点包含有 “name”的属性,需要自行填写一个任意字符串标识。也可以创建多个节点,并对name传入不同标识来区别不同的Content。

在使用上述新增接口时,实际分享的内容会依照 首个参数 contentName 来寻找不同的节点并获取其中的内容。

ii. 在节点中至少应填写节点中的各参数,以作为最基本的分享内容。而其他以平台名称命名的节点(如),则是用于定制各特定平台的分享内容所用到。

iii.(可选)上述接口中第三个参数customContent可用于自定义的替换xml文件中指定字符。

示例:

customContent是一个字典,可以自由定制key和value。key应为在中存在的 字符串,而value则为替换的字符串。

如这是你的customContent字典

1

2

3

4

5

6

7

8

9

10

11

customContent =

{

filedA : “这是替换上去的字符串”,

filedB : “这也是!”,

sinaFieldA: “这个是新浪定制”

}

这是你的xml文件中的Content节点

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

my text is   {fieldA}

my title is {fieldB}

http://mob.com

some.jpg

my sina text is {sinaFieldA}

my sina title

那么最终分享出去的基本参数的text实际内容为”my text is 这是替换上去的字符串”,title实际内容为”my title is 这也是!”;

而定制了新浪的text实际内容为”my sina text is 这个是新浪定制”

如此类推。所有的key值都会被搜索并替换。这样的话开发者就能够自由地以类似参数的形式来控制分享的内容了。开发者可以通过动态控制传入的NSDictionary,来实现动态的改变分享的内容。

iv(可选):

在XML文件中,支持节点之间的继承关系。如父节点为:

1

2

3

4

5

….

如需要增加子节点继承父节点,可以新增一属性parent。例如:

1

2

3

4

5

….

实际分享时,子节点会继承父节点内容,子节点不具有的参数,而父节点具有,则会被补充到子节点上。

919A00BB-A436-4F31-A3BD-EBC3E46D15ED.png

ShareContent.xml示例:

2.准备好ShareContent.xml文件之后,就可以调用上述新增接口进行分享了!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#import

[ShareSDK shareWithContentName:@"mob" /*对应的节点的name 属性*/

platform:self.platformType /*目标分享平台类型*/

customFields:specialFied /*自定义替换字符的字典,也可以传空*/

onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error)

{

switch (state)

{

//根据分享结果的状态码处理您的业务代码

//…

}

}];

3.使用xml文件配置信息,在3.4.2版本中我们添加了调用我们UI的分享接口

(1)使用我们的分享菜单以及编辑界面的接口:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

#import

NSString *imgPath = [[NSBundle mainBundle] pathForResource:@"Sample" ofType:@"jpg"];

NSDictionary *customContent = @{@"text":@"Lisa",

@"title":@"标题",

@"imgUrl":imgPath};

[ShareSDK showShareActionSheet:view items:nil contentName:@"ShareSDK" customFields:customContent onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {

switch (state) {

case SSDKResponseStateSuccess:

{

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功"

message:nil

delegate:nil

cancelButtonTitle:@"确定"

otherButtonTitles:nil];

[alertView show];

break;

}

case SSDKResponseStateFail:

{

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享失败"

message:[NSString stringWithFormat:@"%@", error]

delegate:nil

cancelButtonTitle:@"确定"

otherButtonTitles:nil];

[alertView show];

break;

}

default:

break;

}

}];

(2)不要我们的分享菜单,只要编辑界面的接口:

Objective-C

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

#import

NSString *imgPath = [[NSBundle mainBundle] pathForResource:@"Sample" ofType:@"jpg"];

NSDictionary *customContent = @{@"text":@"Lisa",

@"title":@"标题",

@"imgUrl":imgPath};

[ShareSDK showShareEditor:SSDKPlatformTypeSinaWeibo otherPlatformTypes:nil contentName:@"ShareSDK" customFields:customContent onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {

switch (state) {

case SSDKResponseStateSuccess:

{

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功"

message:nil

delegate:nil

cancelButtonTitle:@"确定"

otherButtonTitles:nil];

[alertView show];

break;

}

case SSDKResponseStateFail:

{

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享失败"

message:[NSString stringWithFormat:@"%@", error]

delegate:nil

cancelButtonTitle:@"确定"

otherButtonTitles:nil];

[alertView show];

break;

}

default:

break;

}

}];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Rayleigh-Taylor不稳定性是一种液体与气体或液体与液体之间的界面不稳定性,主要由于两种物质的密度不同所导致。对于这种流动的CFD分析,可以使用Navier-Stokes方程和质量守恒方程来描述流动,同时要考虑两个物质之间的界面。 下面是一个基于C++的简单的Rayleigh-Taylor不稳定性流动CFD分析代码: ```c++ #include <iostream> #include <cmath> using namespace std; // 定义常量 const double rho1 = 1.0; // 下层密度 const double rho2 = 2.0; // 上层密度 const double g = 9.81; // 重力加速度 const double alpha = 0.01; // 界面扰动幅度 const double L = 1.0; // 流场长度 const double H = 1.0; // 流场高度 const double nu = 0.1; // 动力粘度系数 const double dt = 0.1; // 时间步长 const double t_end = 100.0; // 模拟时间 const int nx = 100; // x方向网格数 const int ny = 100; // y方向网格数 // 定义辅助函数 inline double f(double x) { return 0.5 * (1.0 + tanh(x / alpha)); } inline double fx(double x) { return 0.5 / alpha * pow(cosh(x / alpha), -2); } inline double fxx(double x) { return -1.0 / alpha / alpha * 0.5 * (tanh(x / alpha) - 1) * tanh(x / alpha); } // 主函数 int main() { // 定义变量 double u[nx][ny], v[nx][ny], p[nx][ny], rho[nx][ny]; double u_new[nx][ny], v_new[nx][ny], p_new[nx][ny], rho_new[nx][ny]; double dx = L / (nx - 1); double dy = H / (ny - 1); // 初始化变量 for (int i = 0; i < nx; i++) { for (int j = 0; j < ny; j++) { double x = i * dx; double y = j * dy; double h = f(y - 0.5 * H); rho[i][j] = rho1 * (1.0 - h) + rho2 * h; p[i][j] = rho[i][j] * g * (H - y); } } // 开始时间迭代 double t = 0.0; while (t < t_end) { // 计算新的速度和密度 for (int i = 1; i < nx - 1; i++) { for (int j = 1; j < ny - 1; j++) { // 计算x方向速度 double dux = (u[i+1][j] - 2*u[i][j] + u[i-1][j]) / (dx*dx); double duy = (u[i][j+1] - 2*u[i][j] + u[i][j-1]) / (dy*dy); double dpx = (p[i+1][j] - p[i-1][j]) / (2*dx); double drhox = (rho[i+1][j] - rho[i-1][j]) / (2*dx); u_new[i][j] = u[i][j] + dt * (-u[i][j]*dux - v[i][j]*duy - dpx/rho[i][j] + g*drhox/rho[i][j]); // 计算y方向速度 double dvx = (v[i+1][j] - 2*v[i][j] + v[i-1][j]) / (dx*dx); double dvy = (v[i][j+1] - 2*v[i][j] + v[i][j-1]) / (dy*dy); double dpy = (p[i][j+1] - p[i][j-1]) / (2*dy); double drhoy = (rho[i][j+1] - rho[i][j-1]) / (2*dy); v_new[i][j] = v[i][j] + dt * (-u[i][j]*dvx - v[i][j]*dvy - dpy/rho[i][j] + g*drhoy/rho[i][j]); // 计算密度 rho_new[i][j] = rho[i][j] + dt * (-u[i][j]*drhox - v[i][j]*drhoy - rho[i][j]*(dux + dvy)); } } // 更新速度和密度 for (int i = 1; i < nx - 1; i++) { for (int j = 1; j < ny - 1; j++) { u[i][j] = u_new[i][j]; v[i][j] = v_new[i][j]; rho[i][j] = rho_new[i][j]; } } // 边界条件 for (int i = 0; i < nx; i++) { u[i][0] = 0.0; u[i][ny-1] = 0.0; v[i][0] = 0.0; v[i][ny-1] = 0.0; rho[i][0] = rho1; rho[i][ny-1] = rho2; } for (int j = 0; j < ny; j++) { u[0][j] = 0.0; u[nx-1][j] = 0.0; v[0][j] = 0.0; v[nx-1][j] = 0.0; } // 计算压力 for (int i = 1; i < nx - 1; i++) { for (int j = 1; j < ny - 1; j++) { double drhox = (rho[i+1][j] - rho[i-1][j]) / (2*dx); double drhoy = (rho[i][j+1] - rho[i][j-1]) / (2*dy); double dux = (u[i+1][j] - u[i-1][j]) / (2*dx); double dvy = (v[i][j+1] - v[i][j-1]) / (2*dy); double duxy = (u[i][j+1] - u[i][j-1]) / (2*dy); double dvxy = (v[i+1][j] - v[i-1][j]) / (2*dx); double d2ux = (u[i+1][j] - 2*u[i][j] + u[i-1][j]) / (dx*dx); double d2uy = (u[i][j+1] - 2*u[i][j] + u[i][j-1]) / (dy*dy); double d2vx = (v[i+1][j] - 2*v[i][j] + v[i-1][j]) / (dx*dx); double d2vy = (v[i][j+1] - 2*v[i][j] + v[i][j-1]) / (dy*dy); double d2uxy = (u[i+1][j+1] - u[i-1][j+1] - u[i+1][j-1] + u[i-1][j-1]) / (4*dx*dy); p_new[i][j] = p[i][j] - rho[i][j] * ( (dux*dux + 2*dvxy*duxy + dvy*dvy) - 2*nu*(d2ux + d2vy) + drhox*dux + drhoy*dvy - drhox*d2uxy - drhoy*d2uxy ) * dt; } } // 更新压力 for (int i = 1; i < nx - 1; i++) { for (int j = 1; j < ny - 1; j++) { p[i][j] = p_new[i][j]; } } // 时间步长自适应 double max_u = 0.0; for (int i = 1; i < nx - 1; i++) { for (int j = 1; j < ny - 1; j++) { double u2 = u[i][j]*u[i][j] + v[i][j]*v[i][j]; if (u2 > max_u) { max_u = u2; } } } double cfl = max_u * dt / min(dx, dy); if (cfl > 0.8) { dt = 0.8 * min(dx, dy) / max_u; } // 更新时间 t += dt; } return 0; } ``` 代码中使用的是显式时间迭代方法和中心差分格式,更精确的方法需要使用隐式时间迭代方法和更高阶的差分格式。同时,为了减小数值误差,还需要使用更小的时间步长和更细的网格。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值