微信共有コールバックと微信支払いコールバックの衝突解決

2957 ワード

友盟の客服とフォーラムのサービスが行き届いていないと言わざるを得ない.特に最近、友盟の微信を手に入れて分かち合うことが成功したかどうかの状態は、分かち合うコールバックにはまったく手に入らず、コールバックは全然行かない.そこで友盟フォーラムを見て、質問する人が多くて、答えが全然なくて、オンラインのカスタマーサービスに問い合わせて、返事がアイデアに答えられないか、ドキュメントやdemoを見なければなりませんが、あなたのdemoにも問題があります.问题详述:本项目は友盟分かち合い、微信支払いなどを统合している.アプリから微信にジャンプし、微信からアプリに戻るには、AppDelegateで-(BOOL)アプリケーション:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary*)options(iOS 9以降の方法);また、共有時に友盟の共有APIを呼び出し、その中にcompletionコールバックがあり、ここで共有が成功したかどうかを検出すべきだったが、このcompletionはまったく行かなかった.友盟のカスタマーサービスに問い合わせると、相手は前述のAppDelegateエージェントの方法で処理すると言っただけで、いったいどうすればいいのか、ドキュメントを見ます.のシステムコールバック友盟ドキュメント:
[objc] view plain copy
  • (BOOL)アプリケーション:(UIApplication*)app opopenURL:(NSURL*)url options:(NSDictionary*)options{//6.3の新しいAPI呼び出しは、国外のプラットフォーム(例えば:新版facebookSDK,VK等)の呼び出しを互換するための呼び出しである[6.2のapi呼び出しでコールバックがない場合]であり、国内のプラットフォームに対してBOOL result=[[UMSocialManager defaultManager]handleOpenURL:url options: options:options]; if(!result)){//その他支払いなどのSDKのコールバック}return result;}

  • demo里も同じです.彼らはどのように友盟の機能を実現するかしか考えていないので、肝心なのは私のところに微信の支払いを統合して、両者は以上の代理店を歩いているので、区別しなければなりません.友盟共有呼び出しのAPI:
    [objc] view plain copy
    //共有インタフェースを呼び出す[[UMSocialManager defaultManager]shareToPlatform:platformType messageObject:messageObject currentView Control:self completion:^(id data,NSError*error){if(error){UMSocialLogInfo(@「********************************Share fail with error%@*********」,error);Else{if([data isKindOfClass:[UMSocialShareResponse class]){UMSocialShareResponse*resp=data;//結果メッセージを共有UMSocialLogInfo(@「response message is%@」,resp.message);//サードパーティが元に返したデータUMSocialLogInfo(@「response originalResponse data is%@」,resp.originalResponse);
            }else{  
                UMSocialLogInfo(@"response data is %@",data);  
            }  
        }  
    }];  
    

    問題の肝心な点:同時に友盟の分かち合いと微信の支払いを統合して、すべて同じ代理方法を歩いて、区別する必要があります.そうしないと、分かち合いのコールバックは行かない!解決方法:
    [objc] view plain copy
    -(BOOL)アプリケーション:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary*)options{////Dlog(@"url=%@options=%@", url,options); if([url.host isEqualToString:@"safepay"){//////ジャンプアリペイ財布を振り回して支払いを行い、支払い結果を処理する[[AlipayK SDdefaultService] processOrderWithPaymentResult: url standbyCallkcalbackkkkkkmmntResult: url standbyCalllbbyCallkkkkkcallk:^(NSDictionary*resultDic){NSLog(@「result=%@」,resultDic);}];return YES; }else if ([options[UIApplicationOpenURLOptionsSourceApplicationKey] isEqualToString:@"com.tencent.xin"] && [url.absoluteString containsString:@"pay"]) { return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]]; }else{ return [[UMSocialManager defaultManager] handleOpenURL:url]; } }
    肝心なのは2番目のif判断の[url.absoluteString containsString:@「pay」]で、これまでこの文を書いていなかったので、微信の支払いも微信の共有も、2番目のreturnまで歩いて、共有のreturn(3番目)が届かなかった.ここでエラーが発生すると、共有時のコールバックも行われません.微信の支払いも微信の共有も、アプリに戻るときにcomが付きますが.tencent.xinフィールドですがurlは異なり、区別はここにあります.
    変換元:http://blog.csdn.net/txz_gray/article/details/73528097