ios 从微信返回自己的app

 

有这样一个需求。从我们自己的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了。

 

 

posted @ 2016-05-18 15:16  ArmyBlog  阅读(8090)  评论(1编辑  收藏  举报