안녕하세요 FCM 관련 하여 머리가 나뻐 2주동안 헤딩 하고 있습니다.
기본적으로 순수 안드로이드는 아닙니다. 유니티를 써서 이용하려고 합니다.
시도를 여러번 하다가 계속 같은곳만 헤메는 거 같아 도움의 손길이 절실합니다. ㅜㅜ;;
우선 알림창으로 신호를 받으려고 알람매니저를 걸고 작업을 했습니다. 근데..
작업이 끝나려고 하니 도즈모드라는게 있어서 반복작업은 불가능하다고 하더군요;;;
그래서 생각해서 아 그럼 다른 방법을 써야 겠다 해서 FCM쪽을 보게 되었습니다.
유니티용을 제공하고 있지만 기능이 제한 적입니다. 사운드가 동작 안되거나 진동 LED가 동작 되지 않는다는..
결국 커스텀 해서 써야 하는데 [구글에도 물어봐지만 딱히 다른 답변이 없음;;;ㅜㅜ 포럼 참가하라는 엄청 무책임함 ㅜㅜ;; 유니티용을 그럼 왜 만들었는지 ㅜㅜㅜㅜㅜㅜㅜㅜㅜ]
서론이 길었습니다.
안드로이드 lib로 참고 해서 쓰려고 하는데.. 오류가 자꾸 발생합니다 뭔가 다른 원인이 있는거 같아서 ㅜㅜ
import android.util.Log;
import android.widget.Toast;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = MyFirebaseInstanceIDService.class.getSimpleName();
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d("FCN TOKEN GET", "Refreshed token: " + refreshedToken);
Toast.makeText(MyFirebaseInstanceIDService.this,refreshedToken,Toast.LENGTH_LONG).show();
}
private void sendRegistrationToServer(String refreshedToken) {
}
}
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Map;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
if(remoteMessage.getData() != null)
{
Toast.makeText(MyFirebaseMessagingService.this,remoteMessage.getData().get("body"),Toast.LENGTH_LONG).show();
}
}
}
public class MainActivity extends UnityPlayerActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
///setContentView(R.layout.activity_main);
String token = FirebaseInstanceId.getInstance().getToken();
Toast.makeText(
MainActivity.this
, token, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "Toast main thread", Toast.LENGTH_SHORT).show();
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
Object value = getIntent().getExtras().get(key);
Log.d(TAG, "Key: " + key + " Value: " + value);
}
}
// LocalBroadcastManager.getInstance(this).registerReceiver(tokenReceiver, new IntentFilter("tokenReceiver"));
}
BroadcastReceiver tokenReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String token = intent.getStringExtra("token");
if(token != null)
{
/
}
}
};
}
<application android:label="@string/app_name"
android:icon="@drawable/app_icon">
<activity android:name="com.xxxxxx.MainActivity"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true"/>
</activity>
<service
android:name="com.xxxxxxx.MyFirebaseMessagingService" android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name="com.xxxxxxx.MyFirebaseInstanceIDService" android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<receiver android:name="com.xxxxxxxx.FIRLocalMessagingPublisher"/>
<receiver android:enabled="true" android:exported="true" android:name="com.com.xxxxxxxx.FIRSystemBootEventReceiver">
</receiver>
</application>
문제는 구동시키면
FirebaseInstanceId.getInstance()에서 아무 값도 나오지 않습니다. ㅜㅜ;;
접근을 잘못하고 있는지 ...
혹은 도즈모드 해결을 하는 방법이 있는지 알고 싶습니다.
거의 3주가 되어가는데 같은 곳만 돌고 있었서 맨붕에 빠져가고 있습니다.
도와주시면 감사드리겠습니다