ios應用接入微信開放平台

來源:互聯網
上載者:User

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,都有接入的功能


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.