MonkeyKing は、バグのある SDK を使用せずに、中国のソーシャル ネットワークに SNS メッセージを投稿するのに役立ちます。
MonkeyKing は、openshare と同じ分析プロセスを使用します。また、Hopper 逆アセンブラーなどのリバース エンジニアリング ツールを使用して、内部にある文書化されていない認証メカニズムをいくつか明らかにします。 WeChat 、 QQ 、 Alipay 、またはWeiboへのテキスト、 URL 、画像、オーディオ、ビデオ、およびファイルの共有をサポートします。 MonkeyKing は Web ページから Weibo にメッセージを投稿することもできます。 (注: 音声とビデオは WeChat または QQ 専用であり、ファイルは QQ Dataline 専用です)
MonkeyKing は、 OAuthと WeChat および Alipay によるモバイル決済もサポートしています。
スイフト5、iOS9
(Swift 4.2 の場合は、バージョン 1.13.0 を使用してください)
(Swift 4.1/4.0の場合はバージョン1.11.0を使用してください)
(Swift 3 の場合はバージョン 1.3.0 を使用してください)
例: WeChat への共有 (微信):
プロジェクト ターゲットのInfo.plist
で、 URL Type
、 LSApplicationQueriesSchemes
を次のように設定します。
WeChat アプリのユニバーサル リンクを有効にしたら、 weixinULAPI
も追加する必要があります。
アカウントの登録: // ここで行う必要はありませんが、便宜上
func application ( _ application : UIApplication , didFinishLaunchingWithOptions launchOptions : [ UIApplicationLaunchOptionsKey : Any ] ? ) -> Bool {
MonkeyKing . regsiterAccount (
. weChat (
appID : " xxx " ,
appKey : " yyy " ,
miniAppID : nil ,
universalLink : nil // FIXME: You have to adopt Universal Link otherwise your app name becomes "Unauthorized App"(未验证应用)...
)
)
return true
}
コールバックを処理するには、次のコードを追加します。
// AppDelegate.swift
func application ( _ app : UIApplication , open url : URL , options : [ UIApplicationOpenURLOptionsKey : Any ] = [ : ] ) -> Bool {
//func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { // only for iOS 8
return MonkeyKing . handleOpenURL ( url )
}
プロジェクトでUIScene
使用している場合は、忘れずに userActivities を処理してください。
// SceneDelegate.swift
func scene ( _ scene : UIScene , continue userActivity : NSUserActivity ) {
MonkeyKing . handleOpenUserActivity ( userActivity )
}
メッセージを準備し、MonkeyKing に配信を依頼します。
@ IBAction func shareURLToWeChatSession ( sender : UIButton ) {
MonkeyKing . registerAccount ( . weChat ( appID : " xxx " , appKey : " yyy " , miniAppID : nil ) ) // you can do it here (just before deliver)
let message = MonkeyKing . Message . weChat ( . session ( info : (
title : " Session " ,
description : " Hello Session " ,
thumbnail : UIImage ( named : " rabbit " ) ,
media : . url ( URL ( string : " http://www.apple.com/cn " ) ! )
) ) )
MonkeyKing . deliver ( message ) { success in
print ( " shareURLToWeChatSession success: ( success ) " )
}
}
完了しました!
例: Weibo OAuth
MonkeyKing . oauth ( for : . weibo ) { ( oauthInfo , response , error ) -> Void in
print ( " OAuthInfo ( oauthInfo ) error ( error ) " )
// Now, you can use the token to fetch info.
}
または、コードのみの WeChat OAuth
MonkeyKing . weChatOAuthForCode { [ weak self ] ( code , error ) in
guard let code = code else {
return
}
// TODO: fetch info with code
}
ユーザーがデバイスに Weibo アプリをインストールしていない場合、MonkeyKing は Web OAuth を使用します。
例:アリペイ
let order = MonkeyKing . Order . alipay ( urlString : urlString , scheme : nil )
MonkeyKing . deliver ( order ) { result in
print ( " result: ( result ) " )
}
リモートサーバーで
pay.php
設定する必要があります。pay.php
の例は Demo プロジェクトにあります。
let path = " ... "
MonkeyKing . launch ( . weChat ( . miniApp ( username : " gh_XXX " , path : path , type : . release ) ) ) { result in
switch result {
case . success :
break
case . failure ( let error ) :
print ( " error: " , error )
}
}
username
gh_
接頭辞 (原始 ID) が付いていることに注意してください。
共有にUIActivityViewController
使用したい場合は、MonkeyKing にあるAnyActivity
が役に立ちます。
詳細については、デモを確認してください。
github "nixzhu/MonkeyKing"
pod 'MonkeyKing'
https://github.com/nixzhu/MonkeyKing
貢献者の皆様に感謝します。
WeChat のロゴは、Ray の WeChat-Logo より。
MonkeyKing は MIT ライセンスの下で利用可能です。詳細については、LICENSE ファイルを参照してください。