2016-05-16 6 views
2

OneSignal Android SDKを実装しようとしています。すべてがOKです。userId OneSignalのドキュメントでは、hereにマニュアルがあります。 Applicationクラスを追加menifest.xmlでOneSignal androidからユーザーIDを取得

compile 'com.onesignal:OneSignal:[email protected]' 
    compile 'com.google.android.gms:play-services-gcm:+' 
    compile 'com.google.android.gms:play-services-analytics:+' 
    compile "com.google.android.gms:play-services-location:+" 

と、この権限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

アプリケーションクラスは、このようなものです:

defaultConfig { 
     applicationId "com.nuspay.onesignaldemo" 

     manifestPlaceholders = [manifestApplicationId: "${applicationId}", 
           onesignal_app_id: "OPEN_SIGNAL_ID", 
           onesignal_google_project_number: "GOOGLE_PLAY_PROJECT_NUMBER"] 
     minSdkVersion 17 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 

と依存性として、このGradleのファイルを追加します。 手順は次のとおりです。

public class DemoApplication extends Application{ 
    public static final String TAG = DemoApplication.class.getSimpleName(); 
    private static DemoApplication instace; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     instace=this; 
     initialization(); 
    } 

    private void initialization() { 
     OneSignal.startInit(this) 
     .setAutoPromptLocation(true) 
     .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler()). 
     init(); 

     OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() { 
      @Override 
      public void idsAvailable(String userId, String registrationId) { 
       Log.d("debug", "User:" + userId); 
       if (registrationId != null) 
        Log.d("debug", "registrationId:" + registrationId); 

      } 
     }); 
     OneSignal.enableNotificationsWhenActive(true); 
     OneSignal.enableInAppAlertNotification(true); 
     OneSignal.promptLocation(); 
    } 
} 

ExampleNotificationOpenedHandler、このようなものです:私のActivityonCreateコールバックで今

public class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler { 

    @Override 
    public void notificationOpened(String message, JSONObject additionalData, boolean isActive) { 
     try { 

      Log.d("HWT","Message-->"+message); 
      Log.d("HWT","additionalData-->"+additionalData); 
      Log.d("HWT","isActive-->"+isActive); 

      if (additionalData != null) { 
       if (additionalData.has("actionSelected")) 
        Log.d("HWT", "OneSignal notification button with id " + additionalData.getString("actionSelected") + " pressed"); 

       Log.d("OneSignalExample", "Full additionalData:\n" + additionalData.toString()); 
      } 
     } catch (Throwable t) { 
      t.printStackTrace(); 
     } 
    } 
    } 

がユーザIDを取得するためのコードの下に使用しました。

OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() { 
      @Override 
      public void idsAvailable(String userId, String registrationId) { 
       String text = "OneSignal UserID:\n" + userId + "\n\n"; 
      } 
     }); 

私の問題はidsAvailableコールバックが呼び出されることはありませんです。

注:

  1. IセットアップGCM権限は、プロジェクト番号を取得し、設定を開き信号プロジェクトはすべて、

は、あなたが私の欠点を識別してくださいすることができOKです。前もって感謝します。

+0

あなたはDemoApplication内のユーザIDを受信して​​いますか?またはidsAvailableはあなたのアクティビティとアプリケーションの両方を呼び出すことはありませんか? –

+0

また、私は同じ問題に直面しましたが、私は愚かなことをしていました.APキーメニューの下にあるApp ID/Keyではなく、私のgraddleファイルにユーザーキーを入れました。通知はidsAvailableではなく動作していたので、同じミスをした可能性があります... + 'GOOGLE_PLAY_PROJECT_NUMBER' GoogleのクラウドではなくGoogleの再生です。確かに –

+0

@agonist_、ご意見ありがとうございます。私はもうコールids利用可能なメソッドを取得していない。 「App ID/Key」の代わりに「User key」とはどういう意味ですか? –

答えて

2

は最後に、私は、Applicationクラスからこの行を削除することによってそれを解決:

OneSignal.enableNotificationsWhenActive(true); 
    OneSignal.enableInAppAlertNotification(true); 
    OneSignal.promptLocation(); 
+0

これらの行は、IdsAvailableHandlerに影響しません。アプリがGoogleとOneSignalに登録されて初めて実行される場合、このコールバックが起動するまでに5〜15秒の遅延が発生する可能性があります。また、Android 6.0デバイスでは、場所のアクセス許可のプロンプトが受け入れられたり拒否されたりするまでは起動しません。 – jkasten

+0

@jaksten、ご意見ありがとうございます。しかし残念ながら私はIdsAvailableHandlerから結果を得ていませんでした。この行を削除した後、結果が得られます。 –

+0

'promptLocation'は問題を作成している唯一の方法ですか?あるいは、 'enableInAppAlertNotification'と' enableNotificationsWhenActive'も問題を引き起こしていますか?最新の '2.3.0' SDKバージョンを使用していますか? logcatの問題を確認できますか? – jkasten

関連する問題