2017-05-04 5 views
0

Googleはアンドロイドモバイルアプリケーションでsalesforceライブエージェントチャットを実装しています。すべてうまく動作します。しかし、我々はコーナーケースを持っています。アプリAndroidでSalesforceライブエージェントチャットに接続中にクラッシュする

チャットの開始 - >チャットウィンドウを開く - >ウィンドウの閉じるボタンをすぐに[秒未満で]クリックします。アプリがクラッシュする以下はクラッシュから得られたログです。

ログイン:

のjava.lang.NullPointerException:セッションがアクティブではありません。 LiveAgentリクエストを作成することができません。 でcom.salesforce.android.service.common.utilities.validation.Arguments.checkNotNull(Arguments.java:75) でcom.salesforce.android.chat.core.internal.liveagent.request.InternalChatRequestFactory.checkSessionIsActive(InternalChatRequestFactory .java:104) でcom.salesforce.android.chat.core.internal.liveagent.request.InternalChatRequestFactory.createEndRequest(InternalChatRequestFactory.java:95) com.salesforce.android.chat.core.internal.liveagentで com.salで.handler.EndHandler.onEndingSessionState com.salesforce.android.chat.core.internal.liveagent.LiveAgentChatSession.onStateChanged(LiveAgentChatSession.java:177)で(EndHandler.java:109) com.salesforce.android.service.common.utilities.lifecycle.LifecycleEvaluator.stateChanged(LifecycleEvaluator.java:304)でesforce.android.chat.core.internal.liveagent.LiveAgentChatSession.onStateChanged(LiveAgentChatSession.java:54) でcom.salesforce.android.service.common.utilities.lifecycle.LifecycleStateWatcher $ 1.run(LifecycleStateWatcher.java:73) android.os.Handler.handleCallback(Handler.java:751) android.os.Handler .dispatchMessage(Handler.java:95)at android.os.Looper.loop(Looper.java:154)at android.app.ActivityThread.main(ActivityThread.java:6688)at java.lang.reflect.Method .invoke(ネイティブメソッド)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.r国連(ZygoteInit.java:1468)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)で

は、この問題を克服するための周りのすべての作業があります。ヘルプは高く評価されます。

+0

ここでこの問題をフォローアップ - > https://developer.salesforce.com/forums/ForumsMain?id=9060G000000UUpoQAG –

答えて

0

これは私が私の最後にそれをやっている方法です。お役に立てれば。

WebView wvBody = (WebView) findViewById(R.id.Chat_wvBody); 

String url = "http://myweburl.com/chatx.html?m_email=" + accountInfo.getUserEmail() + 
      "&fname=" + accountInfo.getUserFirstName() + 
      "&lname=" + accountInfo.getUserLastName(); 

    wvBody.getSettings().setJavaScriptEnabled(true); 
    wvBody.getSettings().setSaveFormData(false); 
    wvBody.getSettings().setDomStorageEnabled(true); 
    wvBody.getSettings().setBuiltInZoomControls(false); 
    wvBody.getSettings().setSupportZoom(false); 
    wvBody.getSettings().setLoadWithOverviewMode(true); 
    wvBody.getSettings().setUseWideViewPort(false); 

    if (Build.VERSION.SDK_INT >= 21) { 
     wvBody.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); 
    } 
    wvBody.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap facIcon) { 
      avLoadingIndicatorView.setVisibility(View.VISIBLE); 
      tvNote.setVisibility(View.VISIBLE); 
      //SHOW LOADING IF IT ISNT ALREADY VISIBLE 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      avLoadingIndicatorView.setVisibility(View.GONE); 
      tvNote.setVisibility(View.GONE); 
      //HIDE LOADING IT HAS FINISHED 

      webViewLoadingFinished = true; 
     } 
    }); 

    if (savedInstanceState != null) 
     wvBody.restoreState(savedInstanceState); 
    else 
     wvBody.loadUrl(url); 

    wvBody.setBackgroundColor(0x00000000); 
+0

あなたのヒントをいただき、ありがとうございます。しかし、私はこの場合にwebviewを使用していません。ネイティブ統合が実装されています。 –

関連する問題