ios swift wechat
here

ios - ¿Cómo agregar la API WeChat a un proyecto Swift?



(3)

Se esperaba un tipo -> para este error, verifique una vez que la Documentación de Apple para UIImage esté en UIKit , no en Foundation . Los documentos ahora están todos dirigidos a Swift.

@import UIKit;

En objetivo-c.

#import <UIKit/UIKit.h>

que necesita en la parte superior de su archivo (tampoco es necesario importar la Fundación).

no se pudo importar el encabezado de puente -> se hizo el pequeño error ver este enlace, te ayuda

Estoy tratando de agregar la funcionalidad de compartir dev.wechat.com a mi proyecto. Sin embargo, los archivos SDK , la documentation , las guías de desarrollo y el proyecto de muestra están en Objective-C. Estoy escribiendo mi proyecto en Swift.

Lo que he intentado

Agregué los siguientes archivos SDK a mi proyecto

libWeChatSDK.a WechatAuthSDK.h WXApi.h WXApiObject.h

Intenté seguir los consejos de esta respuesta para usar un encabezado de puente.

MyProject-Bridging-Header.h

#import "WXApi.h"

Errores

Sin embargo, todavía no puedo usar la API de WeChat en mi código. Recibo los siguientes errores:

WXApiObject.h

- (void) setThumbImage:(UIImage *)image; // Expected a type

WXApi.h

+(BOOL) sendAuthReq:(SendAuthReq*) req viewController : (UIViewController*) viewController delegate:(id<WXApiDelegate>) delegate; // Expected a type

Y

<unknown>:0: error: failed to import bridging header ''[my path]/MyProject-Bridging-Header.h''

Pregunta

¿Alguien ha tenido éxito al usar la API WeChat con un proyecto Swift? Me encantaría ver una breve lista de pasos o algún código de muestra. No me importa si hay enlaces adicionales a los recursos chinos.


Consulte la respuesta de @ chengsam para obtener actualizaciones más recientes de este proceso.

Cómo usar el SDK de WeChat en su proyecto Swift

Las instrucciones oficiales en inglés para desarrolladores de WeChat parecen estar desactualizadas e incompletas. Las instrucciones en chino son mejores, pero solo tratan con Objective-C. Los pasos a continuación muestran cómo agregar el SDK WeChat (weixin 微 信) a su proyecto.

Solicite una identificación de la aplicación WeChat

El sitio en inglés es dev.wechat.com . Sin embargo, nunca pude registrarme con éxito en el sitio en inglés. Terminé usando el sitio chino: open.weixin.qq.com . Cómo hacerlo está más allá del alcance de esta respuesta, pero si no sabes chino, el traductor de Google puede ayudarte. Tenga en cuenta que probablemente también necesite un número de teléfono en China.

Después de que se apruebe su aplicación (solo tiene que describir su aplicación, no es necesario que proporcione un código binario o fuente), obtendrá un ID de aplicación, que utilizará en su código.

Descargue el SDK de WeChat

Puede intentar usar el SDK del sitio en inglés, pero dado que las cosas parecen estar más actualizadas al momento de escribir esto en el sitio chino, ahí es donde descargué el SDK para estas instrucciones.

Descargué el SDK de esta página y el enlace para WeChat SDK versión 1.6.2 está aquí . Sin embargo, es probable que desee utilizar la versión más reciente, sea lo que sea en el futuro.

Copie los archivos SDK en su proyecto Xcode

Por el bien de la organización, puse todos los archivos en el mismo grupo en mi navegador de proyectos. (Los archivos reales todavía están en la carpeta raíz del proyecto).

Arreglo del fallo:

En SDK 1.6.2, el problema descrito en la pregunta aparece y se resuelve con la respuesta de @ Anbu.Karthik . Simplemente agregue #import <UIKit/UIKit.h> a WXApiObject.h . (En realidad, puede reemplazar #import <Foundation/Foundation.h> con él). Si está utilizando alguna versión del SDK posterior a 1.6.2, esto ya no será un problema, por lo que es posible que desee completar los otros pasos antes de modificar el Archivos SDK.

Agregar un encabezado de puente

Tenga en cuenta que varios de los archivos SDK son archivos de encabezado Objective-C (.h). Para usarlos en su proyecto Swift, debe agregar un archivo de Encabezado de puente a su proyecto. Agregue un nuevo archivo (Archivo> Nuevo> Archivo ...> iOS> Fuente> Archivo de encabezado) y YourProjectName-Bridging-Header.h .

Agregue la siguiente línea a este archivo.

#import "WXApi.h"

En mi proyecto, esta es la única línea en mi archivo de encabezado de puente porque es la única línea que necesita para WeChat SDK. (Hubo algunas otras líneas de código generadas automáticamente cuando creé el archivo de encabezado, pero simplemente las comenté porque no sabía lo que hicieron. Volveré y editaré esta respuesta más adelante si descubro que son útiles. )

Consulte here , here y aquí para obtener más ayuda con la adición de un encabezado de puente.

No es necesario importar ninguno de los archivos WeChat SDK en sus archivos de código Swift ahora.

Agregue los marcos y bibliotecas requeridos

Vaya a la pestaña General de su proyecto y desplácese hacia abajo hasta Marcos vinculados y Bibliotecas . Haga clic en el botón más (+) para agregar los siguientes marcos y bibliotecas necesarios.

  • libc ++. tbd
  • CoreTelephony.framework
  • libsqlite3.tbd
  • libz.tbd
  • SystemConfiguration.framework
  • libWeChatSDK.a (Este ya debería estar allí si lo ha copiado en su proyecto).

Ahora debería verse así:

El CoreTelephony se mencionó en el CoreTelephony Léame y el libc++ se mencionó en las instrucciones de instalación del SDK en línea, pero no al revés. Acabo de agregarlos a ambos para estar a salvo. Siéntase libre de dejar un comentario si alguno de estos no es realmente necesario.

Agregar esquema de URL

Vaya a la pestaña Información de su proyecto y expanda el elemento Tipos de URL .

Agregue un tipo donde el identificador sea weixin y los Esquemas de URL sean el AppID que debería haber obtenido después de registrar con éxito su aplicación con WeChat.

Editar AppDelegate

Edite su archivo AppDelegate.swift para contener las siguientes funciones. Asegúrese de usar su AppID en lugar del ejemplo. Aparte de eso, puedes copiar y pegar.

import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, WXApiDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // WeChat: replace with your AppID WXApi.registerApp("wx68aa08d12b601234") return true } func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool { return WXApi.handleOpenURL(url, delegate: self) } func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { return WXApi.handleOpenURL(url, delegate: self) } func onReq(req: BaseReq!) { // do optional stuff } func onResp(resp: BaseResp!) { // do optional stuff } // ... }

Vea la aplicación de demostración de muestra para las cosas opcionales que puede hacer en onReq y onResp . (El enlace actual está here pero si ese enlace está roto, busque la demostración de muestra en los documentos oficiales del desarrollador de WeChat).

Editar Info.plist

Haga clic derecho en Info.plist y elija Abrir como> Código fuente. Luego agregue las siguientes dos claves antes del final </dict> :

<key>LSApplicationQueriesSchemes</key> <array> <string>weixin</string> </array> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>

Según el archivo Léame incluido con el SDK, esto es necesario porque iOS 9 limita el acceso http.

Use la API de WeChat

En este punto, debería poder comenzar a utilizar la API de WeChat dentro de su código Swift. Puedo agregar un par de ejemplos API más tarde, pero lo siguiente es una prueba de concepto.

Enviar un mensaje de texto

let message = SendMessageToWXReq() message.text = "Hello WeChat" message.bText = true message.scene = Int32(WXSceneSession.rawValue) // WXSceneSession WXApi.sendReq(message)

No pude usar la enumeración definida por Objective-C WXSceneSession , así que simplemente usé su valor entero. Probablemente haya una mejor solución, pero esto funciona por ahora.

Esta solución anterior se probó con Xcode 7.2 y iOS 9.2.


share describió cómo agregar WeChat API a su aplicación en detalles. Pero después de mi implementación, descubrí que el procedimiento puede ser más simple ahora. A continuación destacaré algunos de los cambios en comparación con esa respuesta. Puede consultar esa respuesta para obtener más detalles.

Descargar el SDK

Usando CocoaPods

pod ''WechatOpenSDK''

Manual

Descargue el SDK de la página de recursos . Existen dos versiones al momento de escribir, la primera incluye la función de pago y la segunda no. Elija el que más le convenga. Después de descargar, copie los archivos a su proyecto. Agregue los marcos y bibliotecas requeridos de acuerdo con esa respuesta. Este paso no es obligatorio si instala con CocoaPods.

Agregar encabezado de puente

Como WXApi está escrito en Objective-C, tenemos que crear un encabezado de puente para usarlo en proyectos Swift. Vea este enlace sobre cómo agregar un encabezado de puente.

Después de crear el encabezado de puente, inserte la siguiente línea:

#import "WXApi.h"

iOS 9+ cambios

En AppDelegate, se utilizan los dos métodos siguientes antes de iOS 9:

func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool { return WXApi.handleOpenURL(url, delegate: self) } func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { return WXApi.handleOpenURL(url, delegate: self) }

En iOS 9, los dos métodos anteriores están en desuso y se utiliza el siguiente:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { return WXApi.handleOpen(url, delegate: self) }

Editar Info.plist

En mi caso, solo se necesita lo siguiente:

<key>LSApplicationQueriesSchemes</key> <array> <string>weixin</string> </array>

Si no funciona para usted, agregue también lo siguiente:

<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>

Extra

Para verificar si la aplicación WeChat está instalada en el teléfono, use el siguiente código:

if WXApi.isWXAppInstalled() { // do something with WeChat... } else { // WeChat app is not installed, show error message }