0

今週カップルのバインディングライブラリを使用してIntercomIO SDKをXamarin.Formsアプリに追加しましたが、現在はプッシュ通知を取得しようとしていますが、私はMainHctivityのPushHandlerService.Register(これ)を呼び出すと、この呼び出しのまわりでtry catchブロックによってキャッチされていないクラスcom.google.android.gms.gcm.GcmReceiverが見つからないというアプリケーションのクラッシュが発生します。XamarinのAndroidでプッシュ通知をIntercomIOと一緒に登録できません

ここでは、Androidでプッシュ通知を設定するMainActivity内のメソッドです。

public void registerForPushNotifications() 
    { 
     try 
     { 
      GcmClient.CheckDevice(this); 
      GcmClient.CheckManifest(this); 

      //Register the app for push notifications. 
      PushHandlerService.Initialize(this); 

      //if (!GcmClient.IsRegistered(this))//Temporarily force the app to register for push notifications 
      { 
       System.Diagnostics.Debug.WriteLine("Registering"); 

       // Register for GCM 
       PushHandlerService.Register(this); 
      } 

      LocalBroadcastManager lbc = LocalBroadcastManager.GetInstance(this); 
      PushActionReceiver rec = new PushActionReceiver(this); 
      lbc.RegisterReceiver(rec, new IntentFilter("pushaction")); 
     } 
     catch (Java.Net.MalformedURLException) 
     { 
      var e = new Exception("There was an error creating the Mobile Service. Verify the URL"); 
      System.Diagnostics.Debug.Fail(String.Format(@"Exception at {0}: {1}", this.GetType().Name, e.Message)); 
      Insights.Report(e); 
     } 
     catch (Exception e) 
     { 
      System.Diagnostics.Debug.Fail(String.Format(@"Exception at {0}: {1}", this.GetType().Name, e.Message)); 
      if (e.GetType() != typeof(TaskCanceledException)) 
       Insights.Report(e); 
     } 
    } 

とマニフェストで

は私がPushHandlerService.Register(this)を呼び出していない時に問題が発生しませんが、その後明らかに、私はできませんインターホン

<receiver android:name="io.intercom.android.sdk.gcm.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"></receiver> 

ための受信機の定義を追加しましたプッシュ通知をもう受信する(私たちのシステムからのものを含む)

ここでは何が起こっているのですか?ライブラリと依存関係は正しく設定されていますが、GcmReceiverクラスを見つけることができないようです。

答えて

1

SDKマネージャの最新のSDKへの更新は、このクラッシュを解決したようです。私はまだプッシュ通知を受信して​​いませんが、私はこれが別の問題のためだと推測しています。プッシュ通知に登録しようとすると、少なくともアプリケーションはクラッシュしません。

0

インターコムからのデールはこちら。他のサードパーティプッシュプロバイダを使用していますか、または独自のGCM受信機をお持ちですか?彼らは私たちのプッシュを消費しており、それらを渡していない可能性があります。これは、Xamarin、Phonegap、Cordovaなどでは難しいことがあります。多くの場合、登録サービスと受信サービスは利用できません。以下にGCMのドキュメントへのリンクと、最も関連性の高いセクションを掲載しました。これが問題の解決に役立たない場合は、https://github.com/intercom/intercom-cordovaまたはインターコムダッシュボードで私たちに連絡するか、[email protected]まで電子メールでご連絡ください。

私たちはここGCMのドキュメントを持っている:あなたの設定の難しさを引き起こしている可能性がありますhttps://docs.intercom.com/configure-intercom-for-your-product-or-site/configure-intercom-for-mobile/enable-push-notifications-with-intercom-for-android-gcm

問題がある:他のGCMセットアップでインターホンを使って

ステップ7.(オプション)

これは、独自のコンテンツにGCMも使用するアプリケーションにのみ適用されます。また、GCMには第三者サービスを使用します。 GcmListenerServiceとデバイストークンを生成するクラスを更新する必要があります。

プッシュデバイストークンを生成してバックエンドに送信するクラスが必要です。あなたのバックエンドにトークンを送信することに加えて、あなたはこのように、インターホンに転送する必要があります。

private final IntercomPushClient intercomPushClient = new IntercomPushClient(); 

public void onHandleIntent(Intent intent) {  
    InstanceID instanceId = InstanceID.getInstance(this); 
    String senderId = "YOUR_SENDER_ID"; 
    String token = instanceId.getToken(senderId, 
    GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 
    pushClient.sendTokenToIntercom(getApplication(), token); 
} 

あなたはGcmListenerServiceを拡張するクラスを持っている必要があります。そのサービスはインターコム向けのプッシュを消費します。私たちはあなたのGcmListenerServiceを設定インターホンプッシュを描画できるようにするには、次のように:

private final IntercomPushClient intercomPushClient = new IntercomPushClient(); 

public void onMessageReceived(String from, Bundle message) { 
    if (intercomPushClient.isIntercomPush(message)) { 
     intercomPushClient.handlePush(getApplication(), message); 
    } else { 
     //DO HOST LOGIC HERE 
    } 
} 
+0

私たちのGCMのセットアップが何らかの理由とFCMに基づいて新しいものを(作成した後に非協力的だった、それが今日仕事を得ることができました)期待どおりに動作し始めました。 – zezioen

関連する問題