有这样一个需求。从我们自己的app分享内容到微信。点击分享内容返回到我们自己的app。(新浪微博的内容分享到微信就是这样的)
前面一直百度,谷歌都没用。可能我用的方法跟他们不一样吧。而且他们的方法都比较老了。2012、13年左右
方法就是用url sheames 然后告诉微信我这个openurl是注册了协议的。你点击之后跳转来我的app。 我不知道我这样理解对还是不对。
但意思大概就是这样的。
结果看了这些帖子。问题之后,我越做越没有头绪。怎么弄都没有返回到我自己的app。
后来直接不看了,到微信开发官网看文档去。结果收获满满。(微信接入指南)
我下载了微信开发官网的demo。然后打开试了各种类型的发送消息给微信
最后锁定了一个发送app消息给微信。这就是我要的效果和新浪微博一样的效果。
#define BUFFER_SIZE 1024 * 100 - (void) sendAppContent { WXMediaMessage *message = [WXMediaMessage message]; message.title = @"App消息"; message.description = @"这种消息只有App自己才能理解,由App指定打开方式!"; [message setThumbImage:[UIImage imageNamed:@"res2.jpg"]]; WXAppExtendObject *ext = [WXAppExtendObject object]; ext.extInfo = @"<xml>extend info</xml>"; ext.url = @"http://www.qq.com"; Byte* pBuffer = (Byte *)malloc(BUFFER_SIZE); memset(pBuffer, 0, BUFFER_SIZE); NSData* data = [NSData dataWithBytes:pBuffer length:BUFFER_SIZE]; free(pBuffer); ext.fileData = data; message.mediaObject = ext; SendMessageToWXReq* req = [[[SendMessageToWXReq alloc] init]autorelease]; req.bText = NO; req.message = message; req.scene = _scene; [WXApi sendReq:req]; }
这些类都有注释,有介绍的
/*! @brief 多媒体消息结构体 * * 用于微信终端和第三方程序之间传递消息的多媒体消息内容 */ @interface WXMediaMessage : NSObject
+(WXMediaMessage *) message; /** 标题 * @note 长度不能超过512字节 */ @property (nonatomic, retain) NSString *title; /** 描述内容 * @note 长度不能超过1K */ @property (nonatomic, retain) NSString *description; /** 缩略图数据 * @note 大小不能超过32K */ @property (nonatomic, retain) NSData *thumbData; /** todo * @note 长度不能超过64字节 */ @property (nonatomic, retain) NSString *mediaTagName; /** * */ @property (nonatomic, retain) NSString *messageExt; @property (nonatomic, retain) NSString *messageAction; /** 多媒体数据对象,可以为WXImageObject,WXMusicObject,WXVideoObject,WXWebpageObject等。 */ @property (nonatomic, retain) id mediaObject;
/*! @brief 多媒体消息中包含的App扩展数据对象 * * 第三方程序向微信终端发送包含WXAppExtendObject的多媒体消息, * 微信需要处理该消息时,会调用该第三方程序来处理多媒体消息内容。 * @note url,extInfo和fileData不能同时为空 * @see WXMediaMessage */ @interface WXAppExtendObject : NSObject /*! @brief 返回一个WXAppExtendObject对象 * * @note 返回的WXAppExtendObject对象是自动释放的 */ +(WXAppExtendObject *) object; /** 若第三方程序不存在,微信终端会打开该url所指的App下载地址 * @note 长度不能超过10K */ @property (nonatomic, retain) NSString *url; /** 第三方程序自定义简单数据,微信终端会回传给第三方程序处理 * @note 长度不能超过2K */ @property (nonatomic, retain) NSString *extInfo; /** App文件数据,该数据发送给微信好友,微信好友需要点击后下载数据,微信终端会回传给第三方程序处理 * @note 大小不能超过10M */ @property (nonatomic, retain) NSData *fileData; @end
1 /*! @brief 第三方程序发送消息至微信终端程序的消息结构体 2 * 3 * 第三方程序向微信发送信息需要传入SendMessageToWXReq结构体,信息类型包括文本消息和多媒体消息, 4 * 分别对应于text和message成员。调用该方法后,微信处理完信息会向第三方程序发送一个处理结果。 5 * @see SendMessageToWXResp 6 */ 7 @interface SendMessageToWXReq : BaseReq 8 /** 发送消息的文本内容 9 * @note 文本长度必须大于0且小于10K 10 */ 11 @property (nonatomic, retain) NSString* text; 12 /** 发送消息的多媒体内容 13 * @see WXMediaMessage 14 */ 15 @property (nonatomic, retain) WXMediaMessage* message; 16 /** 发送消息的类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息 */ 17 @property (nonatomic, assign) BOOL bText; 18 19 /** 发送的目标场景,可以选择发送到会话(WXSceneSession)或者朋友圈(WXSceneTimeline)。 默认发送到会话。 20 * @see WXScene 21 */ 22 @property (nonatomic, assign) int scene; 23 24 @end
从上到下的类介绍
WXMediaMessage,
WXAppExtendObject,
SendMessageToWXReq
最后调用微信的发生方法。发生消息给微信。
在微信聊天界面是这样的。 如果是自己发生的,在消息的左上角有一个箭头(对方发的在右上角)
这样的消息叫应用消息。是不是跟分享一样啊,点击就可以返回到自己的app了。