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了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM