前幾天試了一下服務端接入微信公眾平台,昨天又看了一下APP接入開放平台
公眾平台針對的是公眾賬號,除了提供管理後台之外,也開放了若干接口,讓微信服務器和開發者自己的應用系統能夠對接
開放平台是微信的整體接入方式,不局限於公眾賬號(訂閱號,服務號),移動APP和web應用也可以通過開放平台,實現與微信對接。可以說,公眾平台的API部分,是開放平台的一個子集
開放平台大體上分為3個部分,分別針對移動APP,WEB應用,公眾賬號的接入
目前,移動APP接入微信開放平台後,可以獲得以下的特性:
1、向微信好友發消息
2、發消息到朋友圈
3、收藏內容到“我的收藏”
4、用微信賬號登陸APP,獲得微信賬號的信息
5、支持微信支付
在朋友圈可以看到一個消息後面跟著“來自XXX”,這就是XXX應用接入開放平台後得到的能力
流程和代碼都不復雜,具體方法請看開放平台官網,本文不贅述。只提醒一點,需要在xcode裡配置你自己APP的URL Type,URL Schemas需要填寫微信開放平台提供的那個app id。如果漏掉了這一步,一樣可以發消息到微信,但是發完消息以後就無法從微信再跳轉回你的APP了,因為微信客戶端也是通過openURL方法,跳回你的APP,需要你的APP自己注冊上URL Schemas
首先,一個大的限制是,APP不可能通過微信提供的SDK,直接把消息發到微信服務器上。而是從開發者的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];
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]; }
1、應用主動發消息給微信。應用調用sendReq方法,然後在onResp方法裡處理微信的響應
2、微信發消息給應用。應用在onReq裡處理微信的請求,然後調用sendResp方法發響應到微信
然後這2個流程裡用到的參數,都是微信SDK裡提供的封裝類,如SendMessageToWXReq,WXMediaMessage等
如上所述,由於SDK並沒有提供應用直接發送請求到微信服務器的能力,而只能帶參數跳轉到微信APP,所以接入的限制還是比較大的,很多事情都做不了。
比如說,用戶的設備上一定要裝有微信,而且已經處於登陸狀態。因此很多for iPad的APP,就很難對接微信。因為會在iPad上安裝微信的用戶是很少的,一般都是裝在手機上
還有,也無法實現在自己的APP裡選定用戶發送,只能是編輯好內容,跳到微信裡,在微信通訊錄裡選要發送的好友
也不能根據手機號,直接向微信賬號發送申請加為好友的請求
……
盡管如此,對接微信之後,對APP的社交傳播還是有較大的價值,所以現在可以看到大部分的APP,都有接入微信的功能