有這樣一個需求。從我們自己的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了。