撸了一个转发朋友圈的东西。。。有感兴趣的朋友吗??

2016-11-13 20:48:44 +08:00
 yivanus

有时候吧。需要转发一点收到的信息到朋友圈去。特别是别人发来的图片先下载到本地再去通过朋友圈发出来。 感觉好麻烦。 文字也是一样的需要先复制再去打开朋友圈来粘贴。麻烦死了。

目前实现的功能,在聊天界面选中要转发的文字或者图片(目前只能一个),然后长按会出现 菜单,选中朋友圈就可以转发到朋友圈,在编辑界面也可以正常的编辑文字或者给图片加上文字描述什么的。

有人感兴趣的话我就发一下代码。

5867 次点击
所在节点    微信
29 条回复
murmur
2016-11-13 20:51:16 +08:00
这不就锤子的 1step 么
fchypzero
2016-11-13 21:00:03 +08:00
xposed 不就有转发模块了么
yivanus
2016-11-13 21:03:56 +08:00
我说的是 ios 上的啊。所以 xposed 是给 android 用的啊
yivanus
2016-11-13 21:04:54 +08:00
用苹果的人不会为了这个功能去买个锤子吧?
akaayy
2016-11-13 21:13:03 +08:00
感兴趣 发
Lonely
2016-11-13 21:16:27 +08:00
直接贴 github 地址呗
yivanus
2016-11-13 21:25:46 +08:00
@protocol messageNodeViewDelegate <NSObject>
- (MMUIViewController *) getViewController;
@end

@interface MMTextView : NSObject
{}
- (void)setText:(id)arg1;
@end

@interface MMGrowTextView : NSObject
{
MMTextView *_textView;
}
- (void)postTextChangeNotification;
@end

@interface WCNewCommitViewController:MMUIViewController
{
MMGrowTextView *_textView;
}
@property(nonatomic) _Bool bCommmitOnlyText;
- (id)initWithImages:(id)arg1 contacts:(id)arg2;
@end

@interface CMessageWrap:NSObject
{
NSString *m_nsContent;
unsigned int m_uiMessageType;
}
@property(nonatomic) unsigned int m_uiMessageType;
@property(retain, nonatomic) NSString *m_nsContent;
+ (id)getMsgImg:(id)arg1;
- (_Bool)IsImgMsg;
- (_Bool)IsTextMsg;
@end


@interface BaseMessageNodeView : NSObject
{
CMessageWrap *m_oMessageWrap;
id <messageNodeViewDelegate> m_delegate;
}
- (id)m_msgWrap;
@end

@interface MMImage : NSObject
{}
- (id)initWithImage:(id)arg1;
- (void)commonInit;
@end

int sharetext = 0;
NSString *sharemsg = @"";

%hook ImageMessageNodeView
%new(v@:@)
- (void)sharetotimeline{
UIImage *uimage = [%c(CMessageWrap) getMsgImg: MSHookIvar<CMessageWrap *>(self,"m_oMessageWrap")];
MMImage *mmimage = [[%c(MMImage) alloc] initWithImage:uimage];
[mmimage commonInit];
NSMutableArray* array = [[NSMutableArray alloc] initWithObjects:mmimage, nil];

WCNewCommitViewController *wcvc = [[%c(WCNewCommitViewController) alloc] initWithImages:array contacts:nil];

UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:wcvc];

id <messageNodeViewDelegate> delegate = MSHookIvar<id>(self,"m_delegate");
MMUIViewController *vc= [delegate getViewController];
[vc presentViewController:navC animated:YES completion:nil];
[wcvc release];
[navC release];
}
%end

%hook TextMessageNodeView
%new(v@:@)
- (void)sharetotimeline{
%log;

CMessageWrap *msgwrap = MSHookIvar<CMessageWrap *>(self,"m_oMessageWrap");
NSString *msgtext =[msgwrap m_nsContent];
sharemsg = msgtext;
sharetext = 1;

WCNewCommitViewController *wcvc = [[%c(WCNewCommitViewController) alloc] initWithImages:nil contacts:nil];

UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:wcvc];
[wcvc setBCommmitOnlyText:1];

id <messageNodeViewDelegate> delegate = MSHookIvar<id>(self,"m_delegate");
MMUIViewController *vc= [delegate getViewController];

[vc presentViewController:navC animated:YES completion:nil];
[wcvc release];
[navC release];
}
%end

%hook WCNewCommitViewController
- (void)viewDidAppear:(_Bool)arg1{
if(sharetext){
MMGrowTextView *grow = MSHookIvar<MMGrowTextView *>(self,"_textView");
MMTextView *mmtext = MSHookIvar<MMTextView *>(grow,"_textView");
[mmtext setText:sharemsg];
[grow postTextChangeNotification];
sharemsg = @"";
sharetext = 0;
}
}
%end

%hook BaseMessageNodeView
- (void)showOperationMenu:(id)arg1 NeedDelete:(_Bool)arg2 {
NSLog(@"=======%s",object_getClassName(self));
CMessageWrap *mw = [self m_msgWrap];
if([mw IsTextMsg] || [mw IsImgMsg]]){
NSMutableArray *menuarray = [[NSMutableArray alloc]initWithArray:arg1];
UIMenuItem *menu_timeline = [[UIMenuItem alloc] initWithTitle:@"朋友圈" action:@selector(sharetotimeline)];
[menuarray insertObject:menu_timeline atIndex:0];
[menu_timeline release];
%orig(menuarray,arg2);
}else{
%orig;
}
}
%end


github 上不去。只好贴这里了。(方便自己发而已)
designer
2016-11-13 22:06:30 +08:00
谢谢
coreki
2016-11-13 22:37:56 +08:00
mark ios 使用的?怎么试用
hewigovens
2016-11-14 07:08:58 +08:00
嗯,不 hook 微信果然做不到
yivanus
2016-11-14 09:48:53 +08:00
@coreki 用 theos 编译一下就可以用了。创建一个新工程,然后把里面的 Tweak.xm 用这个内容替换掉。
yfmir
2016-11-22 09:03:53 +08:00
mark
kensla
2017-01-10 17:01:01 +08:00
能给份完整的代码研究下吗
yivanus
2017-01-10 17:47:15 +08:00
@kensla 这个已经是完整的了。。
kensla
2017-01-11 09:07:20 +08:00
@yivanus 我运行起来是无效果的
yivanus
2017-01-11 11:50:05 +08:00
@kensla 越狱手机安装,在聊天对话框里面 长按消息,弹出的菜单中有一个朋友圈。选择朋友圈。
kensla
2017-01-11 14:12:07 +08:00
> Making all for tweak TimeLineTweak …
==> Preprocessing Tweak.xm …
==> Compiling Tweak.xm (armv7)…
Tweak.xm:1:38: error: cannot find interface declaration for
'MMUIViewController', superclass of 'WCNewCommitViewController'; did you
mean 'UIViewController'?
@interface WCNewCommitViewController:MMUIViewController
^~~~~~~~~~~~~~~~~~
UIViewController
kensla
2017-01-11 14:12:55 +08:00
直接替换 Tweak.xm 的内容 编译报错了
kensla
2017-01-11 14:18:29 +08:00
6.5.3 版本还能用吗
yivanus
2017-01-11 18:03:28 +08:00
@kensla 你这前后茅盾啊。。前面说运行起来没有效果。。。后面又说编译错误。。这就很奇怪了。如果你前面没有编译过又是如何运行起来的?这些代码的编译 如果有问题一开始就会报错。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/320226

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX