你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios應用接入微信開放平台

ios應用接入微信開放平台

編輯:IOS開發綜合

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

開放平台和公眾平台的區別

公眾平台針對的是公眾賬號,除了提供管理後台之外,也開放了若干接口,讓微信服務器和開發者自己的應用系統能夠對接

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

開放平台大體上分為3個部分,分別針對移動APP,WEB應用,公眾賬號的接入

移動APP接入開放平台的作用

目前,移動APP接入微信開放平台後,可以獲得以下的特性:

1、向微信好友發消息

2、發消息到朋友圈

3、收藏內容到“我的收藏”

4、用微信賬號登陸APP,獲得微信賬號的信息

5、支持微信支付

在朋友圈可以看到一個消息後面跟著“來自XXX”,這就是XXX應用接入開放平台後得到的能力

ios app接入方式

流程和代碼都不復雜,具體方法請看開放平台官網,本文不贅述。只提醒一點,需要在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];

微信SDK當然不是開源的,所以從這行代碼我們看不出什麼。但是很容易想到,跳轉到另一個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個流程:

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

2、微信發消息給應用。應用在onReq裡處理微信的請求,然後調用sendResp方法發響應到微信

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

對接微信的限制

如上所述,由於SDK並沒有提供應用直接發送請求到微信服務器的能力,而只能帶參數跳轉到微信APP,所以接入的限制還是比較大的,很多事情都做不了。

比如說,用戶的設備上一定要裝有微信,而且已經處於登陸狀態。因此很多for iPad的APP,就很難對接微信。因為會在iPad上安裝微信的用戶是很少的,一般都是裝在手機上

還有,也無法實現在自己的APP裡選定用戶發送,只能是編輯好內容,跳到微信裡,在微信通訊錄裡選要發送的好友

也不能根據手機號,直接向微信賬號發送申請加為好友的請求

……

盡管如此,對接微信之後,對APP的社交傳播還是有較大的價值,所以現在可以看到大部分的APP,都有接入微信的功能


  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved