前幾天試了一下服務端接入微信公衆平臺,昨天又看了一下APP接入開放平臺ios
公衆平臺針對的是公衆帳號,除了提供管理後臺以外。也開放了若干接口,讓微信server和開發人員本身的應用系統能夠對接web
開放平臺是微信的整體接入方式。不侷限於公衆帳號(訂閱號,服務號)。移動APP和web應用也可以經過開放平臺。實現與微信對接。可以說,公衆平臺的API部分,是開放平臺的一個子集xcode
開放平臺大致上分爲3個部分。分別針對移動APP,WEB應用。公衆帳號的接入微信
眼下,移動APP接入微信開放平臺後,可以得到下面的特性:app
一、向微信好友發消息微信公衆平臺
二、發消息到朋友圈微信支付
三、收藏內容到「個人收藏」url
四、用微信帳號登錄APP。得到微信帳號的信息code
五、支持微信支付orm
在朋友圈可以看到一個消息後面跟着「來自XXX」,這就是XXX應用接入開放平臺後獲得的能力
流程和代碼都不復雜,詳細方法請看開放平臺官網。本文不贅述。僅僅提醒一點,需要在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];
但是很是easy想到。跳轉到還有一個app的方式在iOS中就是openURL方法。因此這行代碼作的事情,相似於:
NSString *weixinURL = @"weixin_schema://app_id?title=xxx&content=xxx"; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:weixinURL]];
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]; }
-(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]; }
一、應用主動發消息給微信。應用調用sendReq方法,而後在onResp方法裏處理微信的響應
二、微信發消息給應用。
應用在onReq裏處理微信的請求。而後調用sendResp方法發響應到微信
而後這2個流程裏用到的參數,都是微信SDK裏提供的封裝類,如SendMessageToWXReq,WXMediaMessage等
如上所述,由於SDK並無提供應用直接發送請求到微信server的能力,而僅僅能帶參數跳轉到微信APP,因此接入的限制仍是比較大的。很是多事情都作不了。
比方說。用戶的設備上必定要裝有微信,而且已經處於登錄狀態。所以很是多for iPad的APP。就很是難對接微信。因爲會在iPad上安裝微信的用戶是很是少的,通常都是裝在手機上
還有,也沒法實現在本身的APP裏選定用戶發送,僅僅能是編輯好內容,跳到微信裏,在微信通信錄裏選要發送的好友
也不能依據手機號。直接向微信帳號發送申請加爲好友的請求
……
雖然如此,對接微信以後,對APP的社交傳播仍是有較大的價值,因此現在可以看到大部分的APP。都有接入微信的功能