ios應用接入微信開放平臺

前幾天試了一下服務端接入微信公衆平臺,昨天又看了一下APP接入開放平臺ios

開放平臺和公衆平臺的差異

公衆平臺針對的是公衆帳號,除了提供管理後臺以外。也開放了若干接口,讓微信server和開發人員本身的應用系統能夠對接web

開放平臺是微信的整體接入方式。不侷限於公衆帳號(訂閱號,服務號)。移動APP和web應用也可以經過開放平臺。實現與微信對接。可以說,公衆平臺的API部分,是開放平臺的一個子集xcode

開放平臺大致上分爲3個部分。分別針對移動APP,WEB應用。公衆帳號的接入微信

移動APP接入開放平臺的做用

眼下,移動APP接入微信開放平臺後,可以得到下面的特性:app

一、向微信好友發消息微信公衆平臺

二、發消息到朋友圈微信支付

三、收藏內容到「個人收藏」url

四、用微信帳號登錄APP。得到微信帳號的信息code

五、支持微信支付orm

在朋友圈可以看到一個消息後面跟着「來自XXX」,這就是XXX應用接入開放平臺後獲得的能力

ios app接入方式

流程和代碼都不復雜,詳細方法請看開放平臺官網。本文不贅述。僅僅提醒一點,需要在xcode裏配置你本身APP的URL Type,URL Schemas需要填寫微信開放平臺提供的那個app id。假設漏掉了這一步,同樣可以發消息到微信,但是發完消息之後就沒法從微信再跳轉回你的APP了,因爲微信client也是經過openURL方法。跳回你的APP。需要你的APP本身註冊上URL Schemas

對接微信的原理

首先,一個大的限制是,APP不可能經過微信提供的SDK。直接把消息發到微信server上。

而是從開發人員的APP中,打開微信應用。而後仍是由微信把消息發出去,再跳回開發人員本身的APP。也就是說,APP和微信的交互,是經過應用間跳轉來完畢的,因此核心仍是iOS的這2個方法:

- (BOOL)openURL:(NSURL*)url;

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

發送消息的代碼是:

[WXApi sendReq:req];

微信SDK固然不是開源的,因此從這行代碼咱們看不出什麼。

但是很是easy想到。跳轉到還有一個app的方式在iOS中就是openURL方法。因此這行代碼作的事情,相似於:

NSString *weixinURL = @"weixin_schema://app_id?title=xxx&content=xxx";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:weixinURL]];

經過weixin_schema,打開了機器上安裝的微信應用。在URL末尾加入了相關參數。微信解析後處理。而後在微信裏把消息發出去之後,微信也會調用openURL,又回到了開發人員本身的APP:

URL地址是,wx_xxxxxxxxxxx://platformId=wechat

這個URL被AppDelegate中的這種方法攔截:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return [WXApi handleOpenURL:url delegate:self];
}

而後handleOpenURL方法調用了:

-(void) onResp:(BaseResp*)resp
{
    NSString *strTitle = [NSString stringWithFormat:@"發送消息結果"];
    NSString *strMsg = [NSString stringWithFormat:@"errcode: %d", resp.errCode];
    
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
}

整個交互的原理就是這樣。詳細到對接的代碼裏,主要是2個流程:

一、應用主動發消息給微信。應用調用sendReq方法,而後在onResp方法裏處理微信的響應

二、微信發消息給應用。

應用在onReq裏處理微信的請求。而後調用sendResp方法發響應到微信

而後這2個流程裏用到的參數,都是微信SDK裏提供的封裝類,如SendMessageToWXReq,WXMediaMessage等

對接微信的限制

如上所述,由於SDK並無提供應用直接發送請求到微信server的能力,而僅僅能帶參數跳轉到微信APP,因此接入的限制仍是比較大的。很是多事情都作不了。

比方說。用戶的設備上必定要裝有微信,而且已經處於登錄狀態。所以很是多for iPad的APP。就很是難對接微信。因爲會在iPad上安裝微信的用戶是很是少的,通常都是裝在手機上

還有,也沒法實現在本身的APP裏選定用戶發送,僅僅能是編輯好內容,跳到微信裏,在微信通信錄裏選要發送的好友

也不能依據手機號。直接向微信帳號發送申請加爲好友的請求

……

雖然如此,對接微信以後,對APP的社交傳播仍是有較大的價值,因此現在可以看到大部分的APP。都有接入微信的功能

相關文章
相關標籤/搜索