2017-08-06 9 views
3

プッシュ通知を送信しようとしていますが、コードの実行時に無効な登録エラーが表示されます。 6744250798651355841、 "成功":0、」次のコードアンドロイドで有効なfirebaseトークンを取得するには?

LoginActivity

String getToken = FirebaseInstanceIDService.onTokenRefreshs(); 
String getUsername = username.getText().toString(); 
String URL = DataHolder.TokenUrl(getUsername,getToken); 

OnTokenRefreshコード

public class FirebaseInstanceIDService extends FirebaseInstanceIdService { 
    public static String onTokenRefreshs(){ 
     String token = FirebaseInstanceId.getInstance().getToken(); 
     return token; 
    } 
} 

pushnotificationコード

$url = 'https://fcm.googleapis.com/fcm/send'; 

      $message = array("message" => "hell man"); 

    $xyz=array("firebasetokengoeshere I haven't included for now"); 
    $fields = array(
    'to' => json_encode($xyz), 
    'data' => $message 
    ); 

    $headers = array(
    'Authorization:key = Appkey goes here', 
    'Content-type: application/json' 
    ); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 
    $result = curl_exec($ch); 
    if($result === FALSE){ 

    } 
    curl_close($ch); 

    return $result; 



    $message_status = send_notification($tokens, $message); 
    echo $message; 

{ "multicast_id" があります1 "、" canonical_ids ":0、" results ":[{"エラーまたは: "InvalidRegistration"}]}

私は上記の結果を得ています。このエラーを修正する方法。

答えて

1

正しい方法は、トークンを取得するには:

String token = FirebaseInstanceId.getInstance().getToken(); 

FirebaseInstanceIdServiceの実装では、新しいトークンが作成されるたびに自動的に呼び出されonTokenRefresh()メソッドが含まれている必要があります。明示的に呼び出す必要はありません。オーバーライドされているので、独自のメソッドとして作成する必要はありません。さらに、staticであってはなりません。通常、私は私のsharedPrefでFirebaseトークンを格納します

public class FirebaseCloudInstanceIDService extends FirebaseInstanceIdService { 
private static final String TAG = "Firebase"; 

@Override 
public void onTokenRefresh() { 
    // Get updated InstanceID token. 
    String fcmToken = FirebaseInstanceId.getInstance().getToken(); 
    Log.d(TAG, "Refreshed token: " + fcmToken); 

    AppPref.saveFCMToken(this, fcmToken); 
} 

}

:あなたは以下のスニペットで行くべき

public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService { 

    @Override 
    public void onTokenRefresh() { 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
     // Store the token 
    } 
} 
0

:それはこのようなものでなければなりません。そしてもっと便利にするために、SharePref utilとして機能する私の小さなutilクラスをもっと便利に試すことができます。検索するにはここをクリックandroid-shared-preference-util

関連する問題